策略模式的理解與應用

2021-10-25 13:14:11 字數 1291 閱讀 7833

策略模式(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...