【設計模式】學習筆記2:觀察者模式(Observer)

來源:互聯網
上載者:User

本文出自   http://blog.csdn.net/shuangde800

認識觀察者模式我們先看看報紙和雜誌的訂閱是怎麼回事:1、報社出版報紙2、你向某家報社訂閱報紙,只要他們有新報紙出版,機會給你送來。只要你是他們的訂戶,你就會一直收到報紙3、當你不想再看報紙時,可以取消訂閱,他們就不會再送新報紙來。4、只要報社還在運營,就會一直有人向他們訂閱報紙或者取消報紙。

出版者 +訂閱者 = 觀察者模式

如果你瞭解報紙的訂閱怎麼回事,其實就知道觀察者模式是怎麼回事,只是名稱不太一樣:出版者改稱為“主題”(Subject),訂閱者改稱為“觀察者”(Observer)

定義觀察者模式

觀察者模式定義了對象之間的一對多依賴,這樣一來,當一個對象改變狀態時,它的所有依賴者都會收到並自動更新。

觀察者模式類圖:

設計原則

為了互動對象之間的松耦合設計而努力

松耦合的設計之所以能讓我們建立有彈性的OO系統,能夠應對變化,是因為對象之間的互相依賴降到了最低。

觀察者模式涉及到的設計原則

原則1:找出程式中的變化方面,然後將其和固定不變的方面相分離

在觀察者模式中,會改變的是主題的狀態,以及觀察者的數目和類型。用這個模式,你可以改變依賴於主題狀態的對象,但不必改變主題。這就叫提前規劃!

原則2:針對介面編程,不針對實現編程

主題與觀察者都是使用介面:觀察者利用主題的介面向主題註冊,而主題利用觀察者介面通知觀察者。這樣可以讓兩者之間運作正常,又同時具有松耦合的優點。

原則3:多用組合,少用繼承

觀察者模式利用“組合”將許多觀察者組合進主題中,對象之間的這種關係不是通過繼承產生的,而是在運行時利用組合的方式而產生的。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.