设计模式-策略模式

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);
        }
    }

 

 

posted @ 2023-01-06 16:06  sun-sailing  阅读(13)  评论(0编辑  收藏  举报