• 设计模式(一) 策略模式


    设计模式

    (一)策略模式

    简介:

    关于策略模式,之前知道了一个大概,实际上没有使用过,今天通过一个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
      
  • 相关阅读:
    display:flex 布局之 骰子
    vue 生命周期
    vue webpack 懒加载
    后台管理页面基本布局
    模拟ie9的placeholder
    常用的功能封装 pool.js
    六位数字字母验证码
    CommonJs AMD CMD
    项目封版后的总结
    jq 回到顶部
  • 原文地址:https://www.cnblogs.com/siten0616/p/14134374.html
Copyright © 2020-2023  润新知