iOS设计模式之策略模式

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

结构图:

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

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

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

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

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

策略类

控制器中使用:

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

简单工厂模式:

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

策略模式:

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









最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,833评论 19 139
  • 设计模式基本原则 开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。开-闭原...
    西山薄凉阅读 9,346评论 3 14
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 9,391评论 1 15
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,990评论 25 709
  • 文/一杯热咖啡 这篇文写的毫无逻辑可言。脑洞大开写的 截止到现在,我已经半个多月没更新简书了。简书app就静静的躺...
    一杯热咖啡阅读 1,657评论 0 1

友情链接更多精彩内容