軟體設計part3

前情提要

  • 軟體工程的目的:如時,如質,如預算。
  • 而軟體設計模式則是可以幫助我們更有效的完成高品質的軟體程式。

關於軟體設計模式

  • 由四人幫(Gang of Four)於1995年提出,並收斂成23種經典的設計模式。

design patterns: elements of reusable object-oriented software

  • 對新手而言是軟體設計的快速指南。
  • 對進階者來說可以透過精通設計模式內化其設計的本質。

建築與軟體的相似之處: 都是設計與工程的結合

設計的本質Force創造了軟體的品質。

  • 俗話說:壓力使人成長。
  • 而好的設計會釋放這些forces,來創造生命力(liveness)。

什麼是pattern

  • A pattern is a silution to a problem in a context.
  • 簡單來說就是:在某特定情況下透過某種方法解決某項問題。

策略模式 Strategy Pattern

屬於行為型模式 behavior pattern

problem:如何讓client能夠簡單地抽換或是擴充

  • force1: 行為變動性:演算法及規則的種類眾多並且會改變。
  • force2: 抽換算法或擴充功能。
  • force3: 整體的維護性。

定義一系列演算法並將每個策略封裝,使其可以互相替換,可以立於使用它的user而變化。

  • 會分成三個部份: context, abstact strategy , strategyabc.
  • 可以分成三個步驟: 封裝變動處,萃取共同行為,複合。
  • 完成以上可在使用依賴注入的方式

stategy pattern

Context是一個統一interface負責與外部交流然後strategy是抽象類別,定義統一物件。

優點

  • 演算法或規則可自由切換。
  • 避免使用多重條件判斷。
  • 方便拓展&增加新的演算法與規則。

缺點

  • 策略類別都須對外暴露。