观察者模式

1. 定义: 发布/订阅,每当一个对象的状态发生变化,所有依赖它的对象都会得到通知并自动更新

2. 优点:

(1)观察者与被观察者解耦

(2)建立一套触发机制:

比如,我们去打猎,打死了一只母鹿,母鹿有三个幼崽,因失去了母鹿而饿死,尸体又被两只秃鹰争抢,因分配不均,秃鹰开始斗殴,然后羸弱的秃鹰死掉,生存下来的秃鹰,则因此扩大了地盘……

依赖关系:

母鹿<-幼崽<-秃鹰

Task之间改为观察者模式(不合适,7级链条会导致混乱)

3. 缺点:

(1)多个观察者,开发调试困难

(2)多个观察者一般用异步

(3)多级触发效率低

4. 使用场景:

(1)关联行为场景:a变化导致b变化

(2)事件多级触发:建议不多于2级,即a影响b,b影响c

(3)跨系统消息交换?发布/订阅式消息队列

5. 问题:

(1)事件多级触发,建议消息最多转发一次,即传递两次

(2)多个观察者,异步

6. java提供了observable,observer接口

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