看板 java 關於我們 聯絡資訊
※ 引述《MephistoH (默非斯托)》之銘言: : 動物會叫, 但各有各的叫法 : 在叫的時候, 就用介面~ : "其實abstract class表示的是"is a"關係,interface表示的是"like a"關係 第一次看到 like-a ... 不認為 interface 是 like-a ... 直接提我實作的看法及個人經驗,如有錯誤歡迎指證 目前實作上會用到 abstract 通常都是 Template Method 模式 從良葛格網站例子的 GuessGame 來看就明白 http://openhome.cc/Gossip/DesignPattern/TemplateMethod.htm 而我通常不會以 abstract class 當作頂層 class (當然也是會有 abstract class 當頂層的時候) 我的話會製作一個 interface Game,有個方法 go() GuessGame 會 implements Game 而玩 game 就會是 Game myGame = new ConsoleGame(); myGame.go(); 若你有其他模式的 Game 如 PartyGame 你也可以 implements Game 做自己的 Party template game 要可以玩 (go),或是要可以讀取進度 (load),都是一個行為 自然就是 inteface 定義行為 而 GuessGame 或 PartyGame 是 template,自然就是 abstract 如果你有用到一些open source,他們class結構通常都是如此 用 abstract 當作 template 去 implements interface 例子1: spring LDAP: http://goo.gl/P4Ycq6 例子2: DBUnit: http://goo.gl/IeP9Md -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.192.133 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1428677459.A.960.html
cha122977: 常看到定個interface 然後要有預設行為就用abstract 04/12 02:08
cha122977: class去implement這個interface 要用再繼承這個class 04/12 02:09
qrtt1: java8 有 default method 也可以參考參考 :) 04/12 11:16