1. 定義: 發(fā)布/訂閱菠齿,每當一個對象的狀態(tài)發(fā)生變化陨倡,所有依賴它的對象都會得到通知并自動更新
2. 優(yōu)點:
(1)觀察者與被觀察者解耦
(2)建立一套觸發(fā)機制:
比如靴患,我們?nèi)ゴ颢C,打死了一只母鹿稽物,母鹿有三個幼崽鞋吉,因失去了母鹿而餓死鸦做,尸體又被兩只禿鷹爭搶,因分配不均坯辩,禿鷹開始斗毆,然后羸弱的禿鷹死掉崩侠,生存下來的禿鷹漆魔,則因此擴大了地盤……
依賴關系:
母鹿<-幼崽<-禿鷹
Task之間改為觀察者模式(不合適,7級鏈條會導致混亂)
3. 缺點:
(1)多個觀察者却音,開發(fā)調(diào)試困難
(2)多個觀察者一般用異步
(3)多級觸發(fā)效率低
4. 使用場景:
(1)關聯(lián)行為場景:a變化導致b變化
(2)事件多級觸發(fā):建議不多于2級改抡,即a影響b,b影響c
(3)跨系統(tǒng)消息交換?發(fā)布/訂閱式消息隊列
5. 問題:
(1)事件多級觸發(fā)系瓢,建議消息最多轉(zhuǎn)發(fā)一次阿纤,即傳遞兩次
(2)多個觀察者,異步
6. java提供了observable,observer接口