再上一篇文章《設計模式之政策模式》中,我們通過模拟鴨子項目,了解了什麼是政策模式,怎麼使用政策模式。本文将通過鴨子項目的學習,對政策模式進行總結。
政策模式:
分别封裝行為接口,實作算法族,超類(父類)裡放行為接口對象,
在子類裡具體設定行為對象。
原則就是:
分離變化部分,封裝接口,基于接口程式設計各種功能。
此模式讓行為算法的變化獨立于算法的使用者。
政策模式總結:
1:政策模式三要素:
A:接口類。政策接口或是政策抽象類。
B:實作政策接口的具體政策類
C:context上下問。持有具體政策類的執行個體,并負責調用相關的算法。
來看看duck項目中三個對應
A:對應的就是FlyBehavior和QuackBehavior兩個抽象類
B:具體實作政策類就是QuackBehavior的兩個實作類及FlyBehavior接口的兩個實作類
C:上下文,是由具體政策類的執行個體。GreenHeadDuck和RedHeadQuck

2:政策模式注意點
2.1:要分析出項目中變化部分與不不變化的部分(如duck項目中的Fly及Quack就是變化的)
2.2:多用組合少用基礎;
用行為類組合,而不是行為的繼承。更有彈性
3:政策模式優缺點
政策模式優點
可以自由切換算法
避免了多條件的判斷
擴充性好可以定義新的算法提供給使用者
政策模式缺點
算法類數量增多,每個算法都是一個類
算法要對外安全暴露,因為使用者來決定是用哪個算法,必然要了解算法内部做了什麼。
本文出自凱哥Java(kaigejava)