美文网首页闻道技能(iOS-设计模式)
iOS设计模式之策略模式

iOS设计模式之策略模式

作者: iOS_小胜 | 来源:发表于2016-12-26 19:04 被阅读27次

    策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用类之间的耦合。

    结构图:

    如图所示,Strategy类层次为Context定义了一系列的可供重用的算法和行为,继承有助于析取出这些算法中的公共功能。下面我用一个普通超市里收费的例子简单模拟了这个模式。我把其中对应的类介绍一下:

    父类:父类作用,有个接口获取购买的现金总额,然后计算完打折或者满级,返回真实要支付的金额

    子类:(相当于一个个策略)在父类的接口中进行不一样的计算

    打折类,在初始化的时候传入折扣数

    满减类,在初始化传入满多少减多少

    策略类

    控制器中使用:

    为了好理解策略类,所以我这样写,最好的写法是策略类中那样,加入简单工厂模式,这样使用起来就很方便了!也许你看到这已经把简单工厂模式和策略模式混一起了,反正我第一次看的时候确实是弄混了,接下来描述下两个模式的区别.

    简单工厂模式:

    客户端传一个条件进工厂类,工厂类根据条件创建相应的产品类对象,并return给客户端,供客户端使用。即客户端使用的是工厂类生产的产品对象进行操作。

    策略模式:

    客户端传达给context类的是一个实例,context类只是将该实例拿过去在context类的环境里执行该实例的方法。即客户端使用自己传给Context的策略的对象进行操作.


    相关文章

      网友评论

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

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