首页 > 其他分享 >设计模式-策略模式

设计模式-策略模式

时间:2023-01-06 16:12:55浏览次数:32  
标签:策略 handlers 模式 算法 handler handlerM 设计模式

1 概念

  策略模式(strategy pattern)的原始定义是:定义一系列算法,将每一个算法封装起来,并使它们可以相互替换。策略模式让算法可以独立于使用它的客户端而变化。

2 适用场景

  (1)实现某种目标,有多种策略或是算法,将每个算法封装到算法中。

  (2)隐藏算法相关的数据结构

3 实现以及优缺点

  优点:

  (1)易于扩展,避免使用多重条件选择语句,去掉了if else。

  (2)符合开闭原则

  (3)策略类可以自由切换

  缺点:将产生很多策略类,可以通过享元模式减少对象的数量。

3.1 类结构

(1)策略接口

(2)策略实现类

(3)策略上下文(策略接口的持有者)

(4)策略工厂,通过反射的方式,获取策略实现类,然后放到字典Map中。

private Map<String, IHandler> handlerM;

public CcServiceImpl(List<IHandler> handlers) {
        handlerM = new HashMap<>(handlers.size());
        for (IHandler handler : handlers) {
            if (handlerM.containsKey(handler.getType())) {
                throw new RuntimeException("重复添加。");
            }
            handlerM.put(handler.getType(), handler);
        }
    }

 

 

标签:策略,handlers,模式,算法,handler,handlerM,设计模式
From: https://www.cnblogs.com/guobm/p/17027706.html

相关文章

  • 微信小程序 商品布局 宫格、列表、大图模式切换
    https://blog.csdn.net/m0_61073617/article/details/125104141?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH......
  • 微服务(入门学习五):identityServer4+ocelot+consul实现简单客户端模式
    简介 主要是采用identityServer4和ocelot加上consul实现简单的客户端模式  开发准备 环境准备下载并安装Consul具体请参考前几篇的内容项目介绍创建oc......
  • Redis哨兵模式搭建
    一:哨兵主要作用监控:监控redis主库及从库运行状态;通知:如果redis发生故障转移,可以通过邮件通知管理员;自动故障转移:一旦发现主库宕机,则在从库中通过选举新的master进行故......
  • 可转债策略
    低风险策略可转债低风险策略1.买入30只2.年化收益率大于0或其他数值(可以尝试1.85)3.达到强赎条件卖出筛选步骤1.登录jisilu.com2.点击可转债3.筛选条件,到期税前收益率大于1......
  • SqlServer日志增长过快应对策略
    原文链接:https://www.jianshu.com/p/f59e41a2ea5ehttps://www.modb.pro/db/42341https://blog.csdn.net/cuiweigk19423/article/details/100464016/问题排查过程:输入查......
  • Springboot整合策略模式概念->使用场景->优缺点->企业级实战
    一、前言策略模式可能是在工作中使用最多的,也是在面试中最常提到的,代码重构和优化的必备!小编之前也是一直说,其实没有真正的实战;最近有了机会实战了一下,来分享一下使用心......
  • 设计模式(6)--外观模式
    外观模式原理一个家庭影院的项目:在家庭影院中引入第二个遥控器用来调用各个功能放在一个接口上外观模式提供统一接口,来访问子系统中一群功能相关的接口,外观模式定义了一个高......
  • 设计模式(3)--观察者模式
    概要:观察者模式原理观察者模式实例Java内置观察者Internet气象站项目:提供温度、气压和温度的接口测量数据更新时需实时的通知第三方需要设计开放性API,便于其他第三方公司......
  • 设计模式(4)--工厂模式
    通过Pizza项目引出简单工厂模式工厂方法模式抽象工厂模式关键点披萨项目:要方便披萨品种的扩展、要便于维护、要能运行时扩展披萨族设计:定义一个Pizza的抽象类,定义四种......
  • 设计模式(1)--设计原则
    学习目标:*掌握GOF核心设计模式*掌握重构技法改善设计*掌握面向对象设计原则*理解松耦合设计思想以后会把之前学的设计模式都放上来设计模式:设计模式是一套被反复利用......