观察者模式(发布订阅):Observer(pub/sub) Pattern、行为型模式
观察者模式定义一种一对多的依赖关系,一个主题对象可以被多个观察者对象同事监听,使得主题对象状态变化时,依赖它的对象会得到通知并被自动更新。
观察者模式核心在于 观察者与被观察者解耦
观察者模式应用场景
1、当一个抽象模型包含两个方面内容,其中一个方面依赖另外一个方面
2、实现类似广播机制功能,只需分发广播,系统订阅对象自动接收。
观察者模式的优缺点
优点:
1、观察者和被观察者是松耦合的,符合依赖倒置原则
2、分离了表示层和数据逻辑层,并建立一套触发机制,使得数据变化响应到多个表示层上面
3、实现一对多的通讯机制,支持事件注册,当被观察者触发事件后,只有订阅的观察者可以接收通知。
缺点:
1、如果观察者数量过多,通知耗时
2、事件通知如果呈线性关系,如果其中一个通知处理异常,会影响后续观察者接收。
3、观察者和被观察者存在循环依赖,可能导致系统崩溃。
观察者模式源码应用
1、Google Guava
2、Spring ContextLoaderListener