Re: [問題] 從文字檔讀取演算法
※ 引述《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
08/21 14:31, 1F
→
08/21 14:35, , 2F
08/21 14:35, 2F
推
08/21 22:35, , 3F
08/21 22:35, 3F
→
08/22 00:00, , 4F
08/22 00:00, 4F
推
08/22 08:54, , 5F
08/22 08:54, 5F
討論串 (同標題文章)