軟體設計part3
前情提要
- 軟體工程的目的:如時,如質,如預算。
- 而軟體設計模式則是可以幫助我們更有效的完成高品質的軟體程式。
關於軟體設計模式
- 由四人幫(Gang of Four)於1995年提出,並收斂成23種經典的設計模式。
- 對新手而言是軟體設計的快速指南。
- 對進階者來說可以透過精通設計模式內化其設計的本質。
建築與軟體的相似之處: 都是設計與工程的結合
設計的本質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.
- 可以分成三個步驟: 封裝變動處,萃取共同行為,複合。
- 完成以上可在使用依賴注入的方式
Context是一個統一interface負責與外部交流然後strategy是抽象類別,定義統一物件。
優點
- 演算法或規則可自由切換。
- 避免使用多重條件判斷。
- 方便拓展&增加新的演算法與規則。
缺點
- 策略類別都須對外暴露。