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接口