代碼詳解設計模式--策略模式

策略模式

  定義一系列的算法,把它們一個個封裝起來, 並且使這些算法可以在運行時根據不同需要調整。

  • 優點:
  1. 算法可以自由切換。
  2. 避免使用多重條件判斷。
  3. 擴展性良好。
  • 缺點:
  1. 策略類會增多。
  2. 所有策略類都需要對外暴露。

UML

// 策略
public interface Strategy {
   public int doOperation(int num1, int num2);
}

// 加策略
public class Plus implements Strategy{
   @Override
   public int doOperation(int num1, int num2) {
      return num1 + num2;
   }
}

// 減策略
public class Substract implements Strategy{
   @Override
   public int doOperation(int num1, int num2) {
      return num1 - num2;
   }
}

// 策略context
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);
   }
}

// 使用示例
public class Demo {
   public static void main(String[] args) {
      Context context1 = new Context(new OperationAdd());    
      System.out.println("10 + 5 = " + context.executeStrategy(10, 5));
 
      Context context2 = new Context(new OperationSubstract());      
      System.out.println("10 - 5 = " + context.executeStrategy(10, 5));
   }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章