Skip to content

Latest commit

 

History

History
15 lines (8 loc) · 1.35 KB

File metadata and controls

15 lines (8 loc) · 1.35 KB

观察者模式(Observer Pattern)

在多个对象间,定义一个一对多的依赖,当一个对象(被观察者)状态改变时,所有依赖这个对象(被观察者)的对象(观察者),都会自动收到通知。

一般情况下,被依赖的对象为被观察者,依赖的对象为观察者。在实际项目中,称呼比较灵活,如 Observable/Observer, Subject/Observer, Publisher/Subscriber, Producer/Consumer, EventEmitter/EventListener, Dispatcher/Listener.

允许一个对象(被观察者)在其状态发生变化时通知其他对象(观察者)。观察者模式可以实现解耦,使被观察者和观察者之间没有直接的依赖关系。

观察者模式用于触发联动,一个对象的改变会触发其它观察者的相关动作,而此对象无需关心连动对象的具体实现。

应用场景

在不同的应用场景下,观察者模式又可以细分为不同的类型,如同步阻塞观察者模式和异步非阻塞观察者模式,进程内的观察者模式和跨进程的观察者模式。

同步阻塞观察者模式,主要是为了代码解耦;异步非阻塞观察者模式,除能够实现代码解耦外,还能够提高代码的执行效率;跨进程的观察者模式,通常基于消息队列,解耦更加彻底,用来实现不同步进程间的被观察者和观察者的交互。