美文网首页
设计模式之策略模式

设计模式之策略模式

作者: 超级大鸡腿 | 来源:发表于2018-11-15 16:30 被阅读0次

    策略模式:它定义了算法家族,分别封装起来,可以让算法在不影响到客户端的情况下,使模式可以根据不同的场景进行对应的切换。

    举个容易理解的栗子,像日常生活中,我们去超市又或者是某个网上商店购买商品,vip这种东西相信大家都不会陌生,当你没有vip是个普通顾客的时候结算的总额一般会跟有vip的顾客有区别,当然区别一边就是有vip的购买的比较便宜些。二者相同之处就是都是买东西,都需要结账,不同之处是,二者结算的计算方式会不一样。针对不同类型的顾客,我们的计算方式都会不一样,可以认为计算方式是一种算法,我们需要根据不同类型的顾客切换不同的算法去结算。

    策略模式的大致组成结构:

    1、环境上下文Context

    上下文持有一个startegy的引用

    2、策略对象

    一般是抽象出算法的公共功能的接口或者抽象类。

    3、具体策略对象

    封装了具体的算法行为的对象

    那么在具体实现上,大概如下:

    环境上下文

    策略对象

    具体策略对象

    策略模式的优点:

    从上面的例子可以看出,上面一系列的算法在概念上来说,它们做的都是一种事情,就是计算结算信息,区别在于不一样的计算方式。使用策略模式,实现了以相同的方式调用所有的算法,减少了各种算法类与使用算法类(客户端)的之间的耦合。策略模式的一系列算法是可以相互替换的,平等的,避免了多重条件if...else if...else语句,便于维护。

    策略模式的缺点:

    客户端必须理解知道所有的策略类,才能决定要选用那种策略合适。策略类越多,对象的数量也就越多。

    相关文章

      网友评论

          本文标题:设计模式之策略模式

          本文链接:https://www.haomeiwen.com/subject/vdwyfqtx.html