设计模式之策略模式 一

来源:互联网 发布:淘宝迷你型三辊研磨机 编辑:程序博客网 时间:2024/06/16 05:33

问题

大多数产品开发过程中分为开发环境,集成环境,灰度环境和线上环境。不同的环境的服务器规格的不同,导致性能测试上限不同。因此对不同根据环境或者条件的不同选择不同的算法或者策略来完成该功能。
这里写图片描述

需求

如何让算法和对象分开,让算法独立于使用它的主体?

解决方案

这里写图片描述

环境类(Context):用一个ConcreteStrategy对象来配置。维护一个对Strategy对象的引用。可定义一个接口来让Strategy访问它的数据。
抽象策略类(Strategy):定义所有支持的算法的公共接口。 Context使用这个接口来调用某ConcreteStrategy定义的算法。
具体策略类(ConcreteStrategy):以Strategy接口实现某具体算法。

分析

优点

  • 相关算法系列 继承有助于消除冗余代码
  • 提供了可以替换继承关系的办法
  • 消除了一些if else条件语句

缺点

  • 客户端必须知道所有的策略类,并自行决定使用哪一个策略类
  • Strategy和Context之间的通信开销
  • 策略模式将造成产生很多策略类
原创粉丝点击