繼承關係在面臨父類 介面更動 需求時,顯得不堪一擊。採用繼承的關鍵是子類 "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
參考資料
- Inheritance versus composition: Which one should you choose?
- Android Game Development - Design In-game Entities - The Strategy Pattern
... ...
No comments:
Post a Comment