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