iOS开发-模板方法模式
2016-06-06 22:48
381 查看
http://www.cnblogs.com/xiaofeixiang/p/5126158.html?utm_source=tuicool&utm_medium=referral
模板方法模式定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。模板方法模式是由子类决定实现算法中的步骤,工厂方法由子类决定实现哪一个具体的类,策略模式是封装可以互换的行为,使用委托决定采用哪一个行为,有的时候这三种容易出现理解上的偏差。
模板方法的UML类图:
关于模板方法我们思考一个生活中的例子,我们都会网购,天猫或者京东,经历一下四个步骤,①访问网站②浏览下单③支付④收货,两种网站第二步和最后一步都是一样的,访问和支付的访问不一样,两个网站网址不一样,支付方式不一样~稍微思考一下可以怎么实现~
关于上面的需要设计三个类,网购类,天猫类,京东类:
OnLineShop:
Tmall类继承自OnLineShop:
JDong类:
代码测试:
测试结果:
模板方法优点:
①模板方法模式通过把不变的行为搬移到超类,去除了子类中的重复代码。
②子类实现算法的某些细节,有助于算法的扩展。通过一个父类调用子类实现的操作,
③通过子类扩展增加新的行为,符合“开放-封闭原则”。
缺点
①每个不同的实现都需要定义一个子类,这会导致类的个数的增加,设计更加抽象。
适用于在某些类的算法中,用了相同的方法,造成代码的重复。 控制子类扩展,子类必须遵守算法规则。
模板方式中涉及到一个原则是好莱坞原则,别调用我们,我们会调用你~理解起来就是高层组件可以调用底层组件,底层组件不要调用高层组件~
模板方法模式定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。模板方法模式是由子类决定实现算法中的步骤,工厂方法由子类决定实现哪一个具体的类,策略模式是封装可以互换的行为,使用委托决定采用哪一个行为,有的时候这三种容易出现理解上的偏差。
基础知识
模板方法的UML类图:关于模板方法我们思考一个生活中的例子,我们都会网购,天猫或者京东,经历一下四个步骤,①访问网站②浏览下单③支付④收货,两种网站第二步和最后一步都是一样的,访问和支付的访问不一样,两个网站网址不一样,支付方式不一样~稍微思考一下可以怎么实现~
实战探讨
关于上面的需要设计三个类,网购类,天猫类,京东类:OnLineShop:
模板方法优点:
①模板方法模式通过把不变的行为搬移到超类,去除了子类中的重复代码。
②子类实现算法的某些细节,有助于算法的扩展。通过一个父类调用子类实现的操作,
③通过子类扩展增加新的行为,符合“开放-封闭原则”。
缺点
①每个不同的实现都需要定义一个子类,这会导致类的个数的增加,设计更加抽象。
适用于在某些类的算法中,用了相同的方法,造成代码的重复。 控制子类扩展,子类必须遵守算法规则。
模板方式中涉及到一个原则是好莱坞原则,别调用我们,我们会调用你~理解起来就是高层组件可以调用底层组件,底层组件不要调用高层组件~
相关文章推荐
- 桥接的三种方式
- iOS集合视图
- IOS数组越界
- iOS 版本检测更新方法
- iOS Hit-Testing事件响应链
- 【iOS开发】NSString与int和float的相互转换
- 【iOS】打印方法名
- iOS中的触摸事件和手势处理
- 【iOS】设备系统版本
- iOS 如何创建一个线程,要求可以一直工作,不会执行一次就结束
- iOS开发(OC)——根据时间戳转换成不同的显示
- iOS 直播-获取音频(视频)数据
- ios开发中的一些小技巧
- IOS集合视图
- 如何给Label加背景图片
- iOS layout机制相关方法
- IOS 字符串中去除特殊符号 stringByTrimmingCharactersInSet
- 一篇ios开发学习的文章
- iOS中的星星评分功能视图实现
- iOS 获取崩溃信息