1. 程式人生 > >個人對觀察者模式的理解

個人對觀察者模式的理解

問題:觀察者模式有什麼用?通常被用來實現事件處理系統,當一個主題物件發生改變的時候,所有的觀察者都會發生改變;

假如我們現在需要測量人的身高體重,電子秤顯示的數值會隨著被測量的人不同而顯示不同的資料,這個時候我們就可以把人的身體資料看為主題物件(Subject),把電子秤看為觀察者物件(Observer),電子秤可以有多個,當人的資料變化的時候多個電子秤的資料都會變化,這樣就可以看為主題物件和觀察者物件是一對多的關係;

觀察者模式:定義了物件之間的一對多依賴,這樣依賴,當一個物件改變狀態的時候,它的所有依賴者都會受到通知並自動更新;

首先我們定義一個主題物件:

主題物件有了,現在需要觀察者物件,觀察者物件可以是多個,同時接收到主題物件發生變化的通知:


多個觀察者都可以接收到主體物件發生變化的通知,假設還有第二把電子秤;

測試:

結果:


觀察者模式總結:

主題物件需要繼承Observable,主要依靠setChanged()和notifyObservers()通知觀察者;

觀察者可以有多個 要實現Oupdatebserver介面,需要在自身的構造器中傳入主題物件以便使用observable.addObserver(this)來註冊成為觀察者,然後觀察者物件依靠update(Observable o, Object arg)來實現自身資料的更新,在更新之前需要傳入的判斷主題物件是否正確;


以上只是個人的一些理解,如有不對請指正,多謝~