观察者模式
2018-06-13 本文已影响0人
iOS扫地僧
Objective-C编程之道 iOS设计模式解析
iOS设计模式解析-工厂模式
iOS设计模式解析-抽象工厂模式
iOS设计模式解析-外观模式
iOS设计模式解析-中介者模式
iOS设计模式解析-观察者模式
iOS设计模式解析-装饰模式
iOS设计模式解析-责任链模式
iOS设计模式解析-模板方法
iOS设计模式解析-策略模式
iOS设计模式解析-享元模式
iOS设计模式解析-代码地址
何为观察者模式
观察者模式也叫做发布-订阅模式。观察者通过通知器(发行商)把自己注册到(订阅)特定的通知(杂志)。当有通知的时候,观察者只从通知器得到它订阅的通知。
观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
何时使用观察者模式
在以下情形,应该考虑使用观察者模式。
- 有两种抽象类型相互依赖。将它们封装在各自的对象中,就可以对它们单独进行改变和复用。
- 对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变。
- 一个对象必须通知其他对象,而它又不需知道其他对象是什么。
通知
Cocoa Touch框架使用NSNotificationCenter和NSNotification对象实现了一对多的发布-订阅模型。它们允许主题与观察者以一种松耦合的方式通信。两者在通信时对另一方无需多少了解。
- 一个中心对象为所有观察者提供变更通知
- 只要从广义上关注程序事件
键-值观察
Cocoa(包括Cocoa Touch)提供了一种称为键-值观察的机制,对象可以通过它得到其他对象特定属性的变更通知。这种机制在模型-视图-控制器模式的场景中尤其重要,因为它让视图对象可以经由控制器层观察模型对象的变更。
- 被观察的对象直接向观察者发送通知
- 绑定于特定对象属性的值
注意:我们可以不必从头开始实现整个方案,而是利用Cocoa Touch框架中使用键-值观察(KVO)以及NSNotificationCenter和NSNotification对象实现好的观察者模式。