在策略模式(Strategy Pattern)中,一個類的行為或其算法可以在運行時更改。這種類型的設(shè)計模式屬于行為型模式。
在策略模式中,我們創(chuàng)建表示各種策略的對象和一個行為隨著策略對象改變而改變的 context 對象。策略對象改變 context 對象的執(zhí)行算法。
定義一系列的算法,把它們一個個封裝起來, 并且使它們可相互替換。在有多種算法相似的情況下,使用 if...else 所帶來的復(fù)雜和難以維護(hù)。
結(jié)構(gòu)圖

角色與理解
- 策略模式共分為三種角色:
- Context(上下文環(huán)境):持有抽象策略類,調(diào)用策略方法。
- Strategy(抽象策略類):聲明策略方法。
- Concrete Strategy(具體策略類):實現(xiàn)策略方法。
- Context持有State的引用,完成對ConcreteStrategy中策略方法的調(diào)用
核心代碼
- 抽象策略類
public interface Strategy {
void doSomething();
}
- 真實策略類
public class ConcreteStrategyA implements Strategy {
@Override
public void doSomething() {
System.out.println("AAA");
}
}
public class ConcreteStrategyB implements Strategy {
@Override
public void doSomething() {
System.out.println("BBB");
}
}
- 客戶端
public class Client {
public static void main(String[] args) {
Strategy strategy = new ConcreteStrategyA();
strategy.doSomething();
strategy = new ConcreteStrategyB();
strategy.doSomething();
}
}
-
算法
+關(guān)注
關(guān)注
23文章
4759瀏覽量
97096 -
State
+關(guān)注
關(guān)注
0文章
5瀏覽量
7907
發(fā)布評論請先 登錄
基于入侵行為模式的告警關(guān)聯(lián)
基于訪存行為感知的存儲調(diào)度策略
設(shè)計模式最佳實踐探索—策略模式
設(shè)計模式:備忘錄設(shè)計模式
設(shè)計模式行為型:觀察者模式
什么是策略模式
設(shè)計模式-策略模式

設(shè)計模式行為型:策略模式
評論