策略模式(strategy pattern) 也叫作**政策模式(policy)**是指定義了演算法組並分別封裝起來,讓他們可以互相替換使得演算法的更改並不會影響使用了演算法的使用者。策略模式屬於行為性設計模式,在策略模式中,乙個類的行為及演算法可以在執行時更改。
策略模式重在抽象行為,即將行為抽象為具體的類,呼叫的時候動態選擇行為,策略模式不同策略之間可以相互替換,並不影響最終結果,比如定義不同演算法,不同演算法之間雖然邏輯不同,但要求執行結果一樣,所以策略模式多用於封裝演算法
乙個商店有三種使用者:普通使用者、vip使用者、svip使用者
普通使用者:不打折,原價購買
vip使用者:9折購買
svip使用者:8折購買
如果不使用策略模式我們可能會這樣寫
public
class
nostrategy
elseif(
"vip使用者"
== user)
else
return money;
}}
如果使用策略模式
1.定義乙個策略的父介面
public
inte***ce
strategy
2.針對三種使用者都制定乙個策略(每個策略必須實現父介面)
普通使用者的策略
public
class
strategya
implements
strategy
}
vip使用者的策略
public
class
strategyb
implements
strategy
}
svip使用者的策略
看了上面的**示例發現策略模式加大了我們的**量,那為啥我們要採用策略模式呢?
1.使用策略模式更符合我們程式高內聚低耦合的特點
2.使用策略模式的擴充套件性,也就是 ocp 原則,增加需求,改變需求,只需要對策略類的增改而不需要去改其他地方的**
策略模式主要用來分離演算法,在相同的行為抽象下有不同的具體實現策略。
策略模式的本質是:分離演算法,選擇實現
理解策略模式
title 理解策略模式 url tags 策略模式屬於行為型模式。定義了一系列的演算法,並將每乙個演算法單獨封裝起來,使每個演算法之間可以相互替換,並且演算法本身和使用演算法的客戶端是分割開來的。著重的不是如何實現演算法,而是系統如何根據客戶端的情況來選擇呼叫哪種演算法,從而使程式結構更加靈活,擴...
策略模式的典型應用
做了乙個小東西,裡面有多個角色,每個角色都有特殊的選單項,現使用策略模式對其簡單實現。關於策略模式的介紹請參考其他書籍。下面是專案架構和實現 架構 實現 imenustrategy.cs using system using system.collections.generic using syst...
策略模式的典型應用
做了乙個小東西,裡面有多個角色,每個角色都有特殊的選單項,現使用策略模式對其簡單實現。關於策略模式的介紹請參考其他書籍。下面是專案架構和實現 架構 實現 imenustrategy.cs using system using system.collections.generic using syst...