→ ssccg: implement interface的是class,不是object 08/25 18:42
推 banjmin: 你的case用Strategy Pattern 08/25 19:52
→ Killercat: 你的描述很像「第一類物件」 Strategy可以解決一部份 08/25 19:59
→ Killercat: 問題,不過你想問的應該是「動態決定他有某個行為」吧 08/25 19:59
→ Killercat: java無法產生第一類物件,javascript倒是可以 08/25 20:00
→ Killercat: google://第一類物件 or google://First-class Objects 08/25 20:00
→ Killercat: 通常來講,強型別語言是沒辦法支援這種的 08/25 20:01
去查了一下 跟我想問的東西很像沒錯
也有看到類似的說明
我會去研究看看Strategy Pattern
感謝各位的建議!!!!
→ bitlife: Proxy? 08/25 20:19
看了一下 Strategy 比較符合一點
推 luoqr: 先描述什麼樣的情境你會想要這樣做? 08/25 21:15
我會隨機取得一些info 這些info配有隨機event
每個event有不同要做的事情 甚至同一個event有多種事情要做
我無法知道這些info到底會配到哪些event 可能是一個 可能是十個
我只知道event list 於是直覺上想到多重繼承就是用interface
才想說先做好event然後讀入裝置的時候動態implement
※ 編輯: erttyy8821 (219.87.84.93), 08/25/2014 21:33:48
→ Killercat: Strategy仍然必須要有一個「配接口」在class上 08/25 23:55
→ Killercat: Windows有一種類似的實作叫做COM,簡單的說就是個萬用 08/25 23:56
→ Killercat: 配接口,用非常有限的interface來描述功能。 08/25 23:56
→ Killercat: 你應該是希望「連配接口都沒有 動態probe看有沒有實作 08/25 23:57
→ Killercat: 」吧,這樣的話java目前來講還做不到 08/25 23:57
→ Killercat: 不管是Java還是COM(以及後期的DCOM)都仍然要有個接口 08/25 23:57
→ Killercat: 語言層級無法支援的話,在設計上請儘量避開 08/25 23:58
→ Killercat: 已Strategy觀點來講 COM的「接口」就是IUnknown 08/25 23:59
我理解的沒錯的話
要不我就要先把"可能"的狀態都先implement出來
要不就是換個設計
比如說將拿到的info的event以list存起來再一一做判斷之類的 !?
※ 編輯: erttyy8821 (203.74.126.1), 08/26/2014 10:01:19
→ Killercat: DI配Tool.jar也是能解 麻煩而已 08/26 10:03
→ Killercat: 不過我還是建議你改個設計會好一點 08/26 10:04
→ Killercat: tools.jar可以動態compile 你可以再code裏面動態把code 08/26 10:06
→ Killercat: 寫成檔案 動態呼叫tools.jar compile 動態用DI兜起來 08/26 10:06
→ Killercat: 然後再動態「倒」上class上預留的萬用接口 08/26 10:06
→ Killercat: 這其實不難 不過真的沒必要搞得那麼麻煩.... 08/26 10:07
ok 我也傾向改個設計
長知識了 謝謝!!
※ 編輯: erttyy8821 (203.74.126.1), 08/26/2014 10:08:07
→ Killercat: 程式裏面動態寫code進檔案->tools.jar->用classloader 08/26 10:08
→ Killercat: 把compile好的檔案接回去 大概類似這樣的作法 08/26 10:08
→ Killercat: 預留的接口可以參考IUnknown式怎麼做的 08/26 10:09