大B:“你知道什麼樣的是屬於觀察者模式嗎?”
小A:“是不是有觀察者和被觀察者的就是屬於觀察者模式?”
大B:“上面提到的放風者、偷竊者之間的關係就是觀察者模式在現實中的活生生的例子。你現在知道什麼是觀察者模式了吧?”
小A:“嘿嘿!還不能完全理解。”
大B:“觀察者模式又叫發佈訂閱模式。定義對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並被自動更新。”
大B:“當兩個對象之間鬆耦合,它們依然可以交互,但是不太清楚彼此的細節,觀察者模式提供了一種對象設計,讓主題和觀察者之間鬆耦合。”
小A:“爲什麼呢?”
大B:“1、關於觀察者的一切,主題只知道觀察者實現了某個接口,不需要知道觀察者的具體類是誰。2、任何時候我們都可以增加新的觀察者,因爲主題唯一依賴的東西是一個實現Observer接口的對象列表。3、有新類型的觀察者出現時,主題的代碼不需要修改。只要在新類裡實現觀察者接口,然後註冊爲觀察者即可。4、我們可以獨立的複用主題或觀察者,因爲2者並非緊耦合。5、改變主題或觀察者任何一方,並不會影響另一方,只要他們之間的接口人被遵守。”