觀察者模式:
觀察者模式定義了一種一對多的依賴關系,當一個對象改變狀态時,它的所有依賴者都會受到通知,并自動更新。
注意: 觀察者模式會造成記憶體洩漏,一定要記得取消訂閱
uml關系圖如下:
uml
觀察者模式提供了一種對象設計,讓主題和觀察者之間松耦合。
觀察者與主題之間依賴于接口,主題不需要知道觀察者的具體實作
可以動态添加删除觀察者,對主題沒有任何影響
新增新類型的觀察者對主題沒有影響,主題的代碼不需要修改,而且舊的觀察者也不受影響
觀察者與主題都可以獨立複用,因為是松耦合
隻要約定的接口不改變,修改主題或觀察者任何一方,都不會影響另一方
代碼實作
首先定義抽象的觀察者:
定義被觀察者:
定義具體的觀察者
定義具體的被觀察者:
書寫測試類:
其實,如果大家做過android開發的話,android裡面大量用了觀察者模式,用textwatcher,eventbus等。