• 策略模式


    环境角色:持有一个Strategy类的的引用。

    抽象策略角色:通常由一个抽象类或接口实现。

    具体策略角色:包装了相关的算法或行为。

    public class StrategyDemo {
      interface Strategy {
        Double strategyInterface(Double price);
      }
    
      static class SmallDiscountStrategy implements Strategy{
    
        @Override
        public Double strategyInterface(Double price) {
          return price*0.88;
        }
      }
    
      static class BigDiscountStrategy implements Strategy{
    
        @Override
        public Double strategyInterface(Double price) {
          return price*0.75;
        }
      }
    
      public static void main(String[] args) {
        Double carPrice = 300000.00;
        Strategy strategy;
        System.out.println("想买一辆车,车价30W,走普通客户路线吧");
        strategy = new SmallDiscountStrategy();
        System.out.println("折扣后的车价:"+strategy.strategyInterface(carPrice));
        System.out.println("太贵了,还好亲戚是总经理,走大客户路线吧");
        strategy = new BigDiscountStrategy();
        System.out.println("折扣后的车价:"+strategy.strategyInterface(carPrice));
      }
    }


    想买一辆车,车价30W,走普通客户路线吧
    折扣后的车价:264000.0
    太贵了,还好亲戚是总经理,走大客户路线吧
    折扣后的车价:225000.0

     

    策略模式的优缺点:

      优点:

      1.可以使用继承实现将策略的公共代码迁移到父类中,从而避免重复的代码

      2.策略扩展不再需要修改原有代码,只需继承实现策略接口即可,符合开闭原则

      3.使用策略模式可以避免使用多重条件判断语句,利于维护

      缺点:

      1.客户端必须知道所有的策略实现类,并自行决定使用哪一个

    扩展,策略模式与函数式编程:

      在函数式编程中,将函数的行为传递给调用者,而策略模式正是描述行为的一个最好体现,所以在函数式编程中策略模式应用的十分广泛,也更容易理解。

  • 相关阅读:
    Windows群集安装
    iSCSI配置流程
    StarWind的安装配置
    安装SQL Server 2012 『企业中文版』
    计划安装SQL Server2012需求详细
    Max Degree of Parallelism最大并行度配置
    最佳的MongoDB客户端管理工具
    自学站点地图
    一个解决方案下多个项目时,怎么调试1个项目时不启动其他项目
    如何创建一个https的站点(超简单) 以及 IIS7.5绑定Https域名
  • 原文地址:https://www.cnblogs.com/sstone/p/8477464.html
Copyright © 2020-2023  润新知