站長留言

  • ✅ 本站維護及更新歷史紀錄,詳情請參考公告
  • ✅ 有任何意見、想法,歡迎留言給Spicy知道喔
  • ✅ 固定於每周一至周五更新Blogger文章,周末不定期
程式Design PatternJava

【Design Pattern】1:Introduction 簡介 & Strategy Pattern 策略模式 (行為)

Introduction 簡介

  1. 應先了解 OO 的 SOLID 為何?

  2. 繼承 → 介面

  3. 繼承的缺點:

    • code 在子類別重複
    • 執行時行為不易改變
    • 難以得知所有物件的全部行為
    • 改變會,牽一髮而動全身
  4. 常用 設計守則

    • favor object composition over class inheritance
      • 原因:請看第3點的繼承缺點
    • 會變動的部分 → 封裝
      • 找出程式中可能需要更動之處,把他們獨立出來
      • 不要和那些不需要更動的程式碼混在一起
    • programming to an interface, not an implementation
      • code 針對 supertype 而寫
      • supertype:interface, abstract class
    • 動態的設定行為 → setter method
      • 想改變行為,只要呼叫setter method
  5. 比較: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 範例

  1. 以不同的格式保存文件

  2. 以不同的演算法壓縮文件

  3. 以不同的演算法截獲圖像

  4. 以不同的格式輸出同樣資料的圖形,比如曲線或框圖

  5. 有戰鬥策略,例如:普通攻擊、技能攻擊、使用物品攻擊

Code 程式碼範例

Reference 參考資料

  1. Design Pattern 圖:http://www.tektutor.org/is-singleton-design-pattern-a-code-smell/
  2. SOLID:
    https://skyyen999.gitbooks.io/-study-design-pattern-in-java/content/oodPrinciple.html
  3. Strategy Pattern:https://openhome.cc/Gossip/DesignPattern/StrategyPattern.htm
  4. Strategy Pattern:http://teddy-chen-tw.blogspot.com/2013/08/strategy-pattern.html
  5. Strategy Pattern:
    https://skyyen999.gitbooks.io/-study-design-pattern-in-java/content/strategy.html
下一篇:Observer Pattern 觀察者模式、監聽者模式 (行為)

沒有留言:

張貼留言

本網站建議使用電腦或平板瀏覽