
Introduction 簡介
- 
應先了解 OO 的 SOLID 為何? 
- 
繼承 → 介面 
- 
繼承的缺點: - code 在子類別重複
- 執行時行為不易改變
- 難以得知所有物件的全部行為
- 改變會,牽一髮而動全身
 
- 
常用 設計守則 - favor object composition over class inheritance
- 原因:請看第3點的繼承缺點
 
- 會變動的部分 → 封裝
- 找出程式中可能需要更動之處,把他們獨立出來
- 不要和那些不需要更動的程式碼混在一起
 
- programming to an interface, not an implementation
- code 針對 supertype 而寫
- supertype:interface, abstract class
 
- 動態的設定行為 → setter method
- 想改變行為,只要呼叫setter method
 
 
- favor object composition over class inheritance
- 
比較:abstract class vs interface abstract class interface is-a like-a method 可以有instance 只能有abstract variable non-final final 應用 關係緊密的物件 規格或功能 
Strategy Pattern 策略模式

Introduction 簡介
- 定義行為(演算法)家族,個別封裝起來,讓他們可以互相替換
- 為了達到相同的目的,物件可以因地制宜,讓行為擁有多種不同的實作方法
- 角色
- Context:Client 或 UI介面
- Strategy:interface or abstract class
- Concrete Strategy:實作 Strategy
 
Example 範例
- 
以不同的格式保存文件 
- 
以不同的演算法壓縮文件  
- 
以不同的演算法截獲圖像 
- 
以不同的格式輸出同樣資料的圖形,比如曲線或框圖 
- 
有戰鬥策略,例如:普通攻擊、技能攻擊、使用物品攻擊  
Code 程式碼範例

Reference 參考資料
- Design Pattern 圖:http://www.tektutor.org/is-singleton-design-pattern-a-code-smell/
- SOLID:
 https://skyyen999.gitbooks.io/-study-design-pattern-in-java/content/oodPrinciple.html
- Strategy Pattern:https://openhome.cc/Gossip/DesignPattern/StrategyPattern.htm
- Strategy Pattern:http://teddy-chen-tw.blogspot.com/2013/08/strategy-pattern.html
- Strategy Pattern:
 https://skyyen999.gitbooks.io/-study-design-pattern-in-java/content/strategy.html
 
 
 
 
 
沒有留言:
張貼留言