首先讓我們了解什麼是觀察者模式,觀察者模式是物件的行為型模式,又叫依賴/從屬者模式、發布-訂閱模式、來源-監聽模式。觀察者模式:定義了物件間的一種一對多的依賴關係,當一個物件的狀態改變時,所有依賴它的物件都被通知並被自動更新(GOF)。
如我們的專案中有一個郵件系統,當發送郵件時可能需要發送手機簡訊和RTX訊息通知郵件接收者,這時就可以用觀察者模式進行設計,如果以後還需要增加第三種通知方式,那麼我們的系統會很容易的把新通知方式加入進來。觀察者模式在C#中應用的也很多,最常見的就是我們用到各種控制的事件監聽機制。
觀察者模式的實現中有四種類型的參與者,分別:
1、 抽象主題/目標(Subject)
它可以有任意多個的觀察者,並在一個集合對像中保存對觀察者的引用,並提供增加和刪除觀察者物件的接口,一般用一個抽象類別和接口實現。
2、 抽象觀察者(Observer)
為所有的具體觀察者定義的一個更新接口,當主題/目標發生變化時,通知具體觀察者更新自己。通常用一個抽象類別或介面實作。
3、 具體主題/目標(ConcreteSubject)
將相關的狀態存入具體觀察者對象,當它的狀態改變時,向所有註冊的觀察者發出通知。具體主題/目標又稱為被觀察者。
4、 具體觀察者(ConcreteObserver)
維護一個指向具體主題/目標的引用,並存儲與具體主體/目標一致的相關狀態,並實現一個具體的抽象觀察者的更新接口,以使自身狀態與主題/目標狀態保持一致。
我們以觀察者模式實現一個簡單的郵件發送系統,並且發送郵件的同時發送手機簡訊和RTX訊息通知郵件接收者。
以上就是C#對觀察者(Observer)模式的支援(一)的內容,更多相關內容請關注PHP中文網(www.php.cn)!