二十三種設計模式:策略模式
一、什麼是策略模式?
策略模式:類似於出行方式的不同。
比如:出去玩的方式有很多,
騎自行車、坐公交、坐火車、坐飛機、坐火箭,可以選擇哪種策略。
二、哪裡會用到策略模式?
三、怎麼使用策略模式?
策略模式的結構:
1.抽象策略類:定義一個公共介面,使用不同的方式實現介面。環境角色呼叫不同的演算法。
2.具體策略類:實現定義策略的介面,提供具體實現。
3.環境類:持有一個策略類的引用,最終呼叫給客戶端。
1.宣告抽象策略類:
public abstract class Strategy {
//演算法方法
public abstract void algorithmInterface();
}
2.宣告具體策略類:
//具體策略類
public class ConStrategyA extends Strategy {
//實現抽象方法
@Override
public void algorithmInterface() {
System.out.println("演算法A實現");
}
}
3.設定環境類:用於引用
//環境類
public class Context {
//宣告抽象策略
Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
//上下文介面 用於引用當前的哪一種具體實現
public void contextInterface() {
strategy.algorithmInterface();
}
}
4.客戶端:測試
public class Test {
public static void main(String[] args) {
Context context;
//因為Context是個環境,需要實現構造方法(引數為ConStrategyA//ConStrategyA繼承了strategy)
context = new Context(new ConStrategyA());
context.contextInterface();
context = new Context(new ConStrategyB());
context.contextInterface();
}
}
測試結果為:
演算法A實現
演算法B實現
設計步驟與技巧:
-
策略介面
1.1建立策略介面(宣告abstract類) 1.2建立策略方法(宣告abstract方法)
-
具體策略
2.1建立具體策略類(為普通類,繼承策略介面) 2.2覆蓋具體抽象策略方法(為普通方法,覆蓋實現)
-
建立環境類(重)
3.1建立抽象策略屬性 3.2覆蓋有參構造方法 3.3建立環境上下文介面(用於呼叫或返回當前策略實現)
-
測試
4.1宣告使用環境
4.2宣告使用具體環境
4.3呼叫具體策略方法
PS:萌新入坑,僅為個人思路。不喜勿噴,謝謝。
相關文章
- 軟體設計模式系列之二十三——策略模式設計模式
- 設計模式(二十三)——策略模式(Arrays原始碼分析)設計模式原始碼
- 23種設計模式(二)---策略設計模式設計模式
- 設計模式(策略模式)設計模式
- 設計模式-策略模式設計模式
- 設計模式——策略模式設計模式
- 小白設計模式:策略模式設計模式
- 設計模式之策略模式設計模式
- 設計模式🔫---策略模式設計模式
- js設計模式--策略模式JS設計模式
- 設計模式之【策略模式】設計模式
- 設計模式 #5 (策略模式、代理模式)設計模式
- 【設計模式】漢堡中的設計模式——策略模式設計模式
- Javascript設計模式(四)策略模式JavaScript設計模式
- PHP設計模式(3)—— 策略模式PHP設計模式
- JS設計模式六:策略模式JS設計模式
- 《Head First 設計模式》:策略模式設計模式
- PHP 設計模式之策略模式PHP設計模式
- python設計模式之策略模式Python設計模式
- Java設計模式-策略模式分析Java設計模式
- JavaScript 設計模式之策略模式JavaScript設計模式
- 設計模式專題-策略模式設計模式
- 設計模式(一) 支付策略模式設計模式
- Javascript設計模式之策略模式JavaScript設計模式
- 極簡設計模式-策略模式設計模式
- 略懂設計模式之策略模式設計模式
- GoLang設計模式15 - 策略模式Golang設計模式
- JAVA設計模式之策略模式Java設計模式
- 設計模式第二講--策略模式設計模式
- 設計模式漫談之策略模式設計模式
- javascript設計模式 之 2 策略模式JavaScript設計模式
- Head First 設計模式(1)-----策略模式設計模式
- c/c++設計模式---策略模式C++設計模式
- Java設計模式之(十四)——策略模式Java設計模式
- 細品 javascript 設計模式(策略模式)JavaScript設計模式
- Java設計模式之策略模式示例Java設計模式
- 設計模式(二十三)訪問者設計模式
- 1/24 設計模式之策略設計模式 Strategy Pattern設計模式