004-行为型-03-观察者模式(Observer)
一、概述 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。 定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖者(观察者)都会收到通知并更新。 Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。 1.1、适用场景 一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。 关联行为场景,建立一套触发机制 典型应用 1、侦听事件驱动程序设计中的外部事件 2、侦听/监视某个对象的状态变化 3、发布者/订阅者(publisher/subscriber)模型中,当一个外部事件(新的产品,消息的出现等等)被触发时,通知邮件列表中的订阅者 1.2、优缺点 优点: 观察者和被观察者之间建立一个抽象的耦合 观察者模式支持广播通信,建立一套触发机制。 缺点: 观察者之间有过多的细节依赖、提高时间消耗及程序复杂度 使用要得当,要避免循环调用 1.3、类图角色及其职责 1、Subject(被观察者) 被观察的对象。当需要被观察的状态发生变化时,需要通知队列中所有观察者对象。Subject需要维持(添加,删除,通知)一个观察者对象的队列列表。 2