設計模式——13策略模式(strategy)
13、策略模式(strategy)
策略模式定義了一系列演算法,並將每個演算法封裝起來,使他們可以相互替換,且演算法的變化不會影響到使用演算法的客戶。需要設計一個介面,為一系列實現類提供統一的方法,多個實現類實現該介面,設計一個抽象類(可有可無,屬於輔助類),提供輔助函式。
圖中ICalculator提供同意的方法,
AbstractCalculator是輔助類,提供輔助方法,接下來,依次實現下每個類:
首先統一介面:
[java] view plaincopy
- public interface ICalculator {
- public int calculate(String exp);
- }
輔助類:
[java] view plaincopy
- public abstract class AbstractCalculator {
- public int[] split(String exp,String opt){
- String array[] = exp.split(opt);
- int arrayInt[] = new int[2];
- arrayInt[0] = Integer.parseInt(array[0]);
- arrayInt[1] = Integer.parseInt(array[1]);
- return arrayInt;
- }
- }
三個實現類:
[java] view plaincopy
- public class Plus extends AbstractCalculator implements ICalculator {
- @Override
- public int calculate(String exp) {
- int arrayInt[] = split(exp,”+”);
- return arrayInt[0]+arrayInt[1];
- }
- }
[java] view plaincopy - public class Minus extends AbstractCalculator implements ICalculator {
- @Override
- public int calculate(String exp) {
- int arrayInt[] = split(exp,”-“);
- return arrayInt[0]-arrayInt[1];
- }
- }
[java] view plaincopy - public class Multiply extends AbstractCalculator implements ICalculator {
- @Override
- public int calculate(String exp) {
- int arrayInt[] = split(exp,”*”);
- return arrayInt[0]*arrayInt[1];
- }
- }
簡單的測試類:
[java] view plaincopy
- public class StrategyTest {
- public static void main(String[] args) {
- String exp = “2+8”;
- ICalculator cal = new Plus();
- int result = cal.calculate(exp);
- System.out.println(result);
- }
- }
輸出:10
策略模式的決定權在使用者,系統本身提供不同演算法的實現,新增或者刪除演算法,對各種演算法做封裝。因此,策略模式多用在演算法決策系統中,外部使用者只需要決定用哪個演算法即可。
相關文章
- 設計模式-策略模式(strategy pattern)設計模式
- 設計模式(六)策略模式Strategy設計模式
- Java設計模式之策略模式(Strategy)Java設計模式
- 設計模式筆記:策略模式(Strategy)設計模式筆記
- (Boolan)C++設計模式 ——策略模式(Strategy)C++設計模式
- 設計模式--策略模式Strategy(行為型)設計模式
- 1/24 設計模式之策略設計模式 Strategy Pattern設計模式
- 設計模式的征途—18.策略(Strategy)模式設計模式
- 【設計模式基礎】行為模式 - 5 - 策略(Strategy)設計模式
- 設計模式之策略模式和狀態模式(strategy pattern & state pattern)設計模式
- 【嵌入式c++】設計模式之策略模式(Strategy)C++設計模式
- 策略模式(Strategy)模式
- 策略模式【Strategy Pattern】模式
- 設計模式——策略模式設計模式
- 設計模式(策略模式)設計模式
- 設計模式-策略模式設計模式
- 設計模式🔫---策略模式設計模式
- 淺談策略模式(strategy)模式
- 設計模式之策略模式設計模式
- js設計模式--策略模式JS設計模式
- 小白設計模式:策略模式設計模式
- 設計模式之【策略模式】設計模式
- 設計模式(一) 策略模式設計模式
- php設計模式–策略模式PHP設計模式
- 設計模式(八)——策略模式設計模式
- 設計模式(四):策略模式設計模式
- 設計模式-策略模式(轉)設計模式
- 【設計模式之策略模式】設計模式
- 設計模式 #5 (策略模式、代理模式)設計模式
- [.net 物件導向程式設計深入](26)實戰設計模式——策略模式 Strategy (行為型)物件程式設計設計模式
- 06_Strategy Pattern 策略模式模式
- 【設計模式】漢堡中的設計模式——策略模式設計模式
- PHP 設計模式之策略模式PHP設計模式
- 設計模式(一) 支付策略模式設計模式
- JavaScript 設計模式之策略模式JavaScript設計模式
- 設計模式專題-策略模式設計模式
- Javascript設計模式之策略模式JavaScript設計模式
- JAVA設計模式之策略模式Java設計模式