- Live軟件開發面面談
- 潘俊編著
- 362字
- 2019-07-30 17:55:02
2.2 觀察者模式
在面向對象的語言中,為了在上述的第一種情況中(不確定何時要從被調用方運行調用方的邏輯)實現控制反轉,常常會應用觀察者模式。該模式的含義是:一個對象的內部狀態發生變化時,通知另一些感興趣的對象。前者稱為主體,后者稱為觀察者。具體到代碼上,主體內部保持一個觀察者的列表,程序通過調用主體的addObserver或deleteObserver方法向其增加或刪除觀察者,當主體的內部邏輯引發狀態變化時,調用自身的notifyObservers方法,該方法遍歷觀察者列表,分別調用它們的notify方法,將主體作為參數傳遞給觀察者,觀察者就可以依據主體的狀態變化作出相應的動作。兩者的關系如圖2.1所示。
與事件編程做對比,主體可以被看作事件發布者,觀察者是收聽者,notify方法是具體的事件處理程序,主體作為參數被傳遞給notify方法所以又是事件信息。將觀察者模式以事件編程的語言來改寫,就會得到類似下面的代碼。

圖2.1 觀察者模式



