官术网_书友最值得收藏!

2.2 觀察者模式

在面向對象的語言中,為了在上述的第一種情況中(不確定何時要從被調用方運行調用方的邏輯)實現控制反轉,常常會應用觀察者模式。該模式的含義是:一個對象的內部狀態發生變化時,通知另一些感興趣的對象。前者稱為主體,后者稱為觀察者。具體到代碼上,主體內部保持一個觀察者的列表,程序通過調用主體的addObserver或deleteObserver方法向其增加或刪除觀察者,當主體的內部邏輯引發狀態變化時,調用自身的notifyObservers方法,該方法遍歷觀察者列表,分別調用它們的notify方法,將主體作為參數傳遞給觀察者,觀察者就可以依據主體的狀態變化作出相應的動作。兩者的關系如圖2.1所示。

與事件編程做對比,主體可以被看作事件發布者,觀察者是收聽者,notify方法是具體的事件處理程序,主體作為參數被傳遞給notify方法所以又是事件信息。將觀察者模式以事件編程的語言來改寫,就會得到類似下面的代碼。

圖2.1 觀察者模式

主站蜘蛛池模板: 历史| 吉安县| 新干县| 长寿区| 敦化市| 郧西县| 商南县| 萝北县| 盐池县| 溧水县| 霍邱县| 扶绥县| 民勤县| 甘南县| 深州市| 永嘉县| 阜宁县| 德化县| 秭归县| 泸溪县| 南充市| 拉萨市| 砚山县| 雷波县| 岗巴县| 益阳市| 苍山县| 金堂县| 虹口区| 鄂托克前旗| 突泉县| 云林县| 峨眉山市| 永新县| 嘉峪关市| 叙永县| 翁牛特旗| 托克逊县| 沾益县| 新建县| 通化市|