JavaStrategyPattern(策略模式)
在策略模式(Strategy Pattern)中,一個類的行為或其演算法可以在執行時更改。這種型別的設計模式屬於行為型模式。
在策略模式中,我們建立表示各種策略的物件和一個行為隨著策略物件改變而改變的 context 物件。策略物件改變 context 物件的執行演算法。
關鍵程式碼:實現同一個介面。
優點: 1、演算法可以自由切換。 2、避免使用多重條件判斷。 3、擴充套件性良好。
缺點: 1、策略類會增多。 2、所有策略類都需要對外暴露。
注意事項:如果一個系統的策略多於四個,就需要考慮使用混合模式,解決策略類膨脹的問題。
- 建立一個介面。
/**
* 1. 建立一個介面
* @author mazaiting
*/
public interface Strategy {
/**
* 演算法
*/
int doOperation(int num1, int num2);
}
- 建立實現介面的實體類。
/**
* 2. 建立實現介面的實體類。
* @author mazaiting
*/
public class OperationAdd implements Strategy{
public int doOperation(int num1, int num2) {
return num1 + num2;
}
}
/**
* 2. 建立實現介面的實體類。
* @author mazaiting
*/
public class OperationSub implements Strategy{
public int doOperation(int num1, int num2) {
return num1 - num2;
}
}
/**
* 2. 建立實現介面的實體類。
* @author mazaiting
*/
public class OperationMult implements Strategy{
public int doOperation(int num1, int num2) {
return num1 * num2;
}
}
- 建立Context類。
/**
* 3. 建立 Context 類。
* @author mazaiting
*/
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public int executeStrategy(int num1, int num2) {
return strategy.doOperation(num1, num2);
}
}
- 使用 Context 來檢視當它改變策略 Strategy 時的行為變化。
/**
* 4. 使用 Context 來檢視當它改變策略 Strategy 時的行為變化。
* @author mazaiting
*/
public class Client {
public static void main(String[] args) {
Context context = new Context(new OperationAdd());
System.out.println("10 + 5 = " + context.executeStrategy(10, 5));
context = new Context(new OperationSub());
System.out.println("10 - 5 = " + context.executeStrategy(10, 5));
context = new Context(new OperationMult());
System.out.println("10 * 5 = " + context.executeStrategy(10, 5));
}
}
- 列印結果
10 + 5 = 15
10 - 5 = 5
10 * 5 = 50
相關文章
- 策略模式模式
- 策略模式、策略模式與Spring的碰撞模式Spring
- iOS模式分析 策略模式iOS模式
- 設計模式——策略模式設計模式
- 設計模式(策略模式)設計模式
- 設計模式-策略模式設計模式
- PHP 模式大全 - 策略模式PHP模式
- 設計模式🔫---策略模式設計模式
- 策略模式(Strategy)模式
- 策略模式初探模式
- java策略模式Java模式
- 理解策略模式模式
- 策略(Startegy)模式模式
- 3.9策略模式模式
- java 策略模式Java模式
- 設計模式之策略模式設計模式
- js設計模式--策略模式JS設計模式
- 小白設計模式:策略模式設計模式
- 策略模式與模板方法模式模式
- 設計模式之【策略模式】設計模式
- 行為型模式--策略模式模式
- 設計模式(一) 策略模式設計模式
- php設計模式–策略模式PHP設計模式
- 設計模式(八)——策略模式設計模式
- 設計模式(四):策略模式設計模式
- 命令模式 & 策略模式 & 模板方法模式
- 設計模式-策略模式(轉)設計模式
- 【設計模式之策略模式】設計模式
- 設計模式 #5 (策略模式、代理模式)設計模式
- 大話--策略模式模式
- 策略模式【Strategy Pattern】模式
- 策略模式總結模式
- 玩轉策略模式模式
- 【雜談】策略模式模式
- if else與策略模式模式
- 16_策略模式模式
- 策略模式例項模式
- PHP 設計模式之策略模式PHP設計模式