再上一篇文章《設計模式之策略模式》中,我們通過模擬鴨子項目,了解了什么是策略模式,怎么使用策略模式。本文將通過鴨子項目的學習,對策略模式進行總結。
策略模式:
分別封裝行為接口,實現算法族,超類(父類)里放行為接口對象,
在子類里具體設定行為對象。
原則就是:
? ? 分離變化部分,封裝接口,基于接口編程各種功能。
? ? 此模式讓行為算法的變化獨立于算法的使用者。
策略模式總結:
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).歡迎來聊
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。