天天看點

設計模式之政策模式總結

再上一篇文章《設計模式之政策模式》中,我們通過模拟鴨子項目,了解了什麼是政策模式,怎麼使用政策模式。本文将通過鴨子項目的學習,對政策模式進行總結。

政策模式:

分别封裝行為接口,實作算法族,超類(父類)裡放行為接口對象,

在子類裡具體設定行為對象。

原則就是:

    分離變化部分,封裝接口,基于接口程式設計各種功能。

    此模式讓行為算法的變化獨立于算法的使用者。

政策模式總結:

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)