首頁  >  文章  >  後端開發  >  C#對觀察者(Observer)模式的支援(一)

C#對觀察者(Observer)模式的支援(一)

黄舟
黄舟原創
2016-12-21 14:55:511289瀏覽

首先讓我們了解什麼是觀察者模式,觀察者模式是物件的行為型模式,又叫依賴/從屬者模式、發布-訂閱模式、來源-監聽模式。觀察者模式:定義了物件間的一種一對多的依賴關係,當一個物件的狀態改變時,所有依賴它的物件都被通知並被自動更新(GOF)。

如我們的專案中有一個郵件系統,當發送郵件時可能需要發送手機簡訊和RTX訊息通知郵件接收者,這時就可以用觀察者模式進行設計,如果以後還需要增加第三種通知方式,那麼我們的系統會很容易的把新通知方式加入進來。觀察者模式在C#中應用的也很多,最常見的就是我們用到各種控制的事件監聽機制。

觀察者模式的實現中有四種類型的參與者,分別:

1、  抽象主題/目標(Subject)

它可以有任意多個的觀察者,並在一個集合對像中保存對觀察者的引用,並提供增加和刪除觀察者物件的接口,一般用一個抽象類別和接口實現。

2、  抽象觀察者(Observer)

為所有的具體觀察者定義的一個更新接口,當主題/目標發生變化時,通知具體觀察者更新自己。通常用一個抽象類別或介面實作。

3、  具體主題/目標(ConcreteSubject)

將相關的狀態存入具體觀察者對象,當它的狀態改變時,向所有註冊的觀察者發出通知。具體主題/目標又稱為被觀察者。

4、  具體觀察者(ConcreteObserver)

維護一個指向具體主題/目標的引用,並存儲與具體主體/目標一致的相關狀態,並實現一個具體的抽象觀察者的更新接口,以使自身狀態與主題/目標狀態保持一致。

       我們以觀察者模式實現一個簡單的郵件發送系統,並且發送郵件的同時發送手機簡訊和RTX訊息通知郵件接收者。

 以上就是C#對觀察者(Observer)模式的支援(一)的內容,更多相關內容請關注PHP中文網(www.php.cn)! 


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn