针对接口编程,先写接口 在写内部实现
策略模式: 精简代码,去掉多余的if-else 转化成对象
例如自定义个验证的textfield ,用来验证邮箱或者电话号码,
1.写一个验证的父类:一个验证方法里面不做任何处理,派生两个子类,重写验证的方法来验证邮箱和电话号码。
2.将验证的父类作为属性给textfield
3.初始化 textfield 和他的验证的类
策略模式是在已知的情况下使用
生成器模式:
1.不需要知道细节
2.模块化处理
3.很好的组合特性
一个指导者的协议,多个承包商的协议,每个承包商实现指导者和各自类型的协议
备忘录模式:
第三方好用的序列化代码 fastcoder
可用备忘录模式优化存储方案
纪录和恢复一个uiview 的状态
通知中心模式:(通知中心的类设计为单例)
对象持有问题:用NSHashtable 实现weak引用 和nsset功能一样 进行对象存储
参数的严格验证:
通知中心设计模式,可以使用接口协议让发布订阅不需要使用通知nsnotif来实现,防止通知的坑
原型模式: 支持拷贝自己
写法:可以写一个协议 实现一个叫克隆方法
外观模式:只操作外观的类
复杂的字系统
不关心逻辑
解藕合,简化操作
装饰模式:创建一个装饰者行为要和原始类一致
1.不改变原始类
2.不改变使用继承的情形
3.动态拓展对象的功能
4.持有对象的引用
使用场景:不知道类实现细节,接口,要拓展只能通过拓展装饰者接口(派生类增加方法和属性)
category 增加属性或者方法
桥接模式
abstraction :控制类(抽象) impl :实现类(抽象)
上层抽象接口职能
实现层抽象接口的职能
层级间的通信协议
代理模式:
协议可以用来规范接口,塞选的作用,代理用来降低偶合度
命令模式:
迭代器模式:
便利访问集合数据,父类生成一个可以访问自身子类的枚举器
适配器模式:
适用于一个数据源相同,但是view的样式不同
模版模式:
多个类根据同一个接口来实现一些相同的操作,例如2个游戏,初始化,开始结束的功能使用统一接口。
中介模式:
用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
组合模式:
将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 "组合对象" 的含义。
self-manager 模式
uiview 自己管理自己的业务逻辑。但是不要往子类中加入网络请求的奇葩结构,在分类中处理一些数据,使用分类的方式,把原来要写在c的代码放到v的分类中