Fork me on GitHub

8/30/2011

[DP] 繼承或合成, composition 搭配 strategy pattern 範例

簡單明瞭的機器人遊戲範例,清楚說明了 composition 搭配 strategy pattern 的強大,推薦閱讀!

繼承關係在面臨父類 介面更動 需求時,顯得不堪一擊。採用繼承的關鍵是子類 "is-a" 父類,但 更重要的是,這個 "is-a" 的關係, 是否在開發週期間恆常不變 ,如果不是的話 composition 是更好的選擇!


Don't use inheritance just to get code reuse

Don't use inheritance just to get at polymorphism


當 上層類 依賴於 組件類 (composition), 不讓 上層類 直接使用 組件 instance,而是使用一個抽象介面 ,那麼就可以達到 run-time 決定選用不同規格的組件 (因為他們都實現相同的介面),更大增加了彈性,這就是 Strategy Pattern

參考資料
  1. Inheritance versus composition: Which one should you choose?
  2. Android Game Development - Design In-game Entities - The Strategy Pattern

... ...

No comments:

Post a Comment