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

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

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

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

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

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

2、 抽象觀察者(Observer)

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

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

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

4、 具體觀察者(ConcreteObserver)

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

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

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

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.