Re: [問題] 繼承、界面、抽象
※ 引述《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
→
04/12 02:08, , 1F
04/12 02:08, 1F
→
04/12 02:09, , 2F
04/12 02:09, 2F
→
04/12 11:16, , 3F
04/12 11:16, 3F
討論串 (同標題文章)