Re: [問題] 從文字檔讀取演算法

看板java作者 (xx)時間15年前 (2009/08/21 11:31), 編輯推噓3(302)
留言5則, 3人參與, 最新討論串6/6 (看更多)
※ 引述《eicsarch (Eics)》之銘言: : 想問各位大大,假設我做一個比大小的程式 : 就是輸入好幾個數字來比,用的演算法是想用排的 : 可是我希望就是主程式和演算法是分開的,讓我隨時可以替換我用的演算法 : 那程式,也就是jar的部分就比較屬於輸入數字的部分 : 而匯入的檔案就決定了比較的演算法,匯入的檔案是什麼都沒關係 : 重點是在於演算法可以替換,如果是將我的數字傳給另一個程式作不知道行不行 : 這樣也是有達到替換的效果 : 像這種技巧大概是要看什麼內容的書呢? : 因為不知道這種方法叫什麼,找了很多關鍵字都不是我要的 : 麻煩各位幫我解答一下,謝謝 我想你的需求應該是一個介面 透過這個介面主程式可以透過同一組method去執行各個演算法(class) 主程式不用管演算法裡面是怎麼做的 而演算法裡也不用假設主程式會怎麼呼叫它 只要把這組method寫好,讓主程式可以用介面把它們「接起來」即可 如果我的理解沒有錯的話= = 那麼java語言特性裡的「介面」應該可以達到你要的效果 介面可以透過語法的繼承(extends)或介面(interface)來實作 我寫了一個範例: example.algos.MaxMinAlgo 定義了一個演算法(算max和min)的介面 example.algos.MaxMinAlgoLoader 則是用來實體化的class loader example.algos.maxmin.* 裡面的class實作了MaxMinAlgo這個介面 (語法上 我是用繼承,這樣可以不用確實實作每個method) 由於我將整個netbeans project包起來了,所以煩請至此下載: http://www.badongo.com/file/16704708 事實上 很多軟體的「plugin」機制都是以這個方式來實作的 主程式跟plugin可以分開編譯 要用時主程式再去把它找出來 然後透過已經定義好的介面就可以執行它 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.128.72

08/21 14:31, , 1F
好優 又多學一種方法了 感謝 目前學會了classloader而已
08/21 14:31, 1F

08/21 14:35, , 2F
如果用介面的話,可以像動態載入那樣隨時抽換掉class嗎
08/21 14:35, 2F

08/21 22:35, , 3F
那麼要求動態,那去試試 osgi 吧。
08/21 22:35, 3F

08/22 00:00, , 4F
這個範例就是動態載入的方式...
08/22 00:00, 4F

08/22 08:54, , 5F
您提供的範例只是在現有的 CL 上用 reflection 而已啊@@
08/22 08:54, 5F
文章代碼(AID): #1AZXKeJp (java)
討論串 (同標題文章)
文章代碼(AID): #1AZXKeJp (java)