定義
定義對象間的一種一對多的依賴關(guān)系,當(dāng)一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新。
Observer模式描述了如何建立這種關(guān)系。這一模式中的關(guān)鍵對象是目標(biāo)(subject)和觀察者(observer)。一個目標(biāo)可以有任意數(shù)目的依賴它的觀察者。一旦目標(biāo)的狀態(tài)發(fā)生改變,所有的觀察者都得到通知。這種交互也稱為發(fā)布-訂閱(publish-subscribe)。目標(biāo)是通知的發(fā)布者。故觀察者模式又名 依賴(Dependents),發(fā)布-訂閱(Publish-Subscribe)。
適用場景
以下任何一種情況可以使用觀察者模式:
當(dāng)一個抽象模型有兩個方面,其中一個方面依賴于另一個方面。將這兩者封裝在獨立的對象中以使它們可以各自獨立地改變和復(fù)用。
當(dāng)對一個對象的改變需要同時改變其它對象,而不知道具體有多少對象有待改變。
當(dāng)一個對象必須通知其它對象,而它又不能假定其它對象是誰。換言之,你不希望這些對象是緊密耦合的。