新聞動(dòng)態(tài)
獸用B超系統(tǒng)觀察者設(shè)計(jì)模式用來(lái)定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。將一個(gè)系統(tǒng)分割成一系列相互協(xié)作的類(lèi)有一個(gè)常見(jiàn)的副作用:需要維護(hù)相關(guān)對(duì)象間的一致性。開(kāi)發(fā)人員不希望為了維持一致性而使各類(lèi)緊密耦合,因?yàn)檫@樣降低了它們的可重用性。
獸用B超系統(tǒng)在以下任一情況下可以使用觀察者模式:
1、當(dāng)一個(gè)抽象模型有兩個(gè)方面, 其中一個(gè)方面依賴于另一方面。將這二者封裝在獨(dú)立的對(duì)象中以使它們可以各自獨(dú)立地改變和復(fù)用。
2、當(dāng)對(duì)一個(gè)對(duì)象的改變需要同時(shí)改變其它對(duì)象, 而不知道具體有多少對(duì)象有待改變。
3、當(dāng)一個(gè)對(duì)象必須通知其它對(duì)象,而它又不能假定其它對(duì)象是誰(shuí)。換言之,你不希望這些對(duì)象是緊密耦合的。
獸用B超系統(tǒng)這一模式中的關(guān)鍵對(duì)象是目標(biāo)和觀察者。一個(gè)目標(biāo)可以有任意數(shù)目的依賴它的觀察者。一旦目標(biāo)的狀態(tài)發(fā)生改變, 所有的觀察者都得到通知。作為對(duì)這個(gè)通知的響應(yīng),每個(gè)觀察者都將查詢目標(biāo)以使其狀態(tài)與目標(biāo)的狀態(tài)同步。這種交互也稱為發(fā)布-訂閱。目標(biāo)是通知的發(fā)布者。它發(fā)出通知時(shí)并不需知道誰(shuí)是它的觀察者??梢杂腥我鈹?shù)目的觀察者訂閱并接收通知。
http://xzh.i3geek.com