观察者模式

Objective-C编程之道 iOS设计模式解析
iOS设计模式解析-工厂模式
iOS设计模式解析-抽象工厂模式
iOS设计模式解析-外观模式
iOS设计模式解析-中介者模式
iOS设计模式解析-观察者模式
iOS设计模式解析-装饰模式
iOS设计模式解析-责任链模式
iOS设计模式解析-模板方法
iOS设计模式解析-策略模式
iOS设计模式解析-享元模式
iOS设计模式解析-代码地址

何为观察者模式

观察者模式也叫做发布-订阅模式。观察者通过通知器(发行商)把自己注册到(订阅)特定的通知(杂志)。当有通知的时候,观察者只从通知器得到它订阅的通知。

观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

何时使用观察者模式

在以下情形,应该考虑使用观察者模式。

  • 有两种抽象类型相互依赖。将它们封装在各自的对象中,就可以对它们单独进行改变和复用。
  • 对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变。
  • 一个对象必须通知其他对象,而它又不需知道其他对象是什么。

通知

Cocoa Touch框架使用NSNotificationCenterNSNotification对象实现了一对多的发布-订阅模型。它们允许主题与观察者以一种松耦合的方式通信。两者在通信时对另一方无需多少了解。

  • 一个中心对象为所有观察者提供变更通知
  • 只要从广义上关注程序事件

键-值观察

Cocoa(包括Cocoa Touch)提供了一种称为键-值观察的机制,对象可以通过它得到其他对象特定属性的变更通知。这种机制在模型-视图-控制器模式的场景中尤其重要,因为它让视图对象可以经由控制器层观察模型对象的变更。

  • 被观察的对象直接向观察者发送通知
  • 绑定于特定对象属性的值

注意:我们可以不必从头开始实现整个方案,而是利用Cocoa Touch框架中使用键-值观察(KVO)以及NSNotificationCenterNSNotification对象实现好的观察者模式。

你可能感兴趣的:(观察者模式)