设计模式(一) 策略模式

设计模式

(一)策略模式

简介:

关于策略模式,之前知道了一个大概,实际上没有使用过,今天通过一个demo来再次加深一下学习。

strategy_pattern_uml_diagram

在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式

在策略模式中,我们通过创建 **表示各种策略的对象 **和一个 **行为随着策略对象改变而改变的 context 对象 **。策略对象改变 context 对象的执行算法。

需要创建的类:

  • 一个接口:用于约束

    public interface Strategy{ 
    	public String doOperation();
    }
    
  • 多个策略类

    public class Operation1 implements Strategy{
        //策略1
        @Override
       public String doOperation() {
          return "这是策略1";
       }
    }
    
    public class Operation2 implements Strategy{
        //策略2
        @Override
       public String doOperation() {
          return "这是策略2";
       }
    }
    
  • 一个context类,用于切换策略

    public class Context {
       private Strategy strategy;
     	
       public Context(Strategy strategy){
          this.strategy = strategy;
       } 
        
       //执行策略
       public String executeStrategy(){
          return strategy.doOperation();
       }
    }
    
  • 创建一个Demo 在 main 函数中演示一下:

    public class StrategyPatternDemo {
       public static void main(String[] args) {
          //创建context 使用策略1,调用context中的执行策略方法
          Context context = new Context(new Operation1());    
          System.out.println( context.executeStrategy() );
          //创建context 使用策略2,调用context中的执行策略方法
     	  context = new Context(new Operation2());    
          System.out.println( context.executeStrategy() );
       }
    }
    
  • 结果为:

    这是策略1
    
    这是策略2
    
posted @ 2020-12-14 17:20  Siten616  阅读(62)  评论(0编辑  收藏  举报