策略模式

解释

策略模式(Strategy)定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。

UML图

策略模式UML图.jpg

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

优缺点

优点:
(1)提供了管理相关的算法簇的办法,避免了代码重复;
(2)可以避免使用多重条件(if-else)语句。
缺点:
(1)客户端必须知道所有的策略类,并自行觉id那个使用哪一个策略类,增加了客户端使用难度;
(2)造成很多的策略类。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 场景问题# 1.1 报价管理## 向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的...
    七寸知架构阅读 5,142评论 9 62
  • 1 场景问题 1.1 报价管理 向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的客户要...
    4e70992f13e7阅读 3,147评论 2 16
  • 本文仅仅为入门,高手勿喷。 实际工作中,我们总会遇到类似如下的需求:某支付系统接入以下几种商户进行充值:易宝网易,...
    JarvanMo阅读 14,277评论 14 26
  • 1.问题例1:一个菜单功能能够根据用户的“皮肤”首选项来决定是否采用水平的还是垂直的排列形式。同事可以灵活增加菜单...
    小飞猪阅读 390评论 0 0
  • 1.概述 demo地址,欢迎star 例子1: 商场产品销售:可以正常价格售出,可以打折形式售出,也可以通过积分的...
    barry阅读 807评论 0 1