subject+observers=observer pattern
觀察者模式定義:
物件之間的一對多依賴關係,當乙個物件改變狀態時,所有依賴於它的物件都會自動獲得通知
觀察者模式應用:
主題物件只與觀察者基類有耦合
客戶配置觀察者的數量與型別
observers首先要知道subject,然後把自己註冊到subject中
subject儲存所有註冊過的observer,當狀態發生變化時,廣播給所有註冊過的觀察者
subject可以採用push或者pull的方式沒有observer交流資訊
//抽象類 主題
;class
observer
//抽象類 觀察者
;class
concretesubject
:public subject//具體主題
//觀察者訂閱
void
removeobserver
(observer* o)
//觀察者取消訂閱
void
notifyobserver()
//通知觀察者
void
updateval
(int val)};
class
concreteobserver
:public observer//具體觀察者
void
update
(int val)
this
->val = val;}}
;int
main()
執行結果the dow is now 32200.
the dow is now 30000.
the dow is now 27800.
meloneater1 know that trump was sent to the sun.
the dow is now 28000.
the dow is now 25500.
meloneater1 know that trump was sent to the sun.
meloneater2 know that trump was sent to the sun.
the dow is now 23200.
meloneater2 know that trump was sent to the sun.
C 觀察者模式(Observer)
當有很多個物件依賴於乙個狀態值時,為了在狀態值改變時統一的通知這些物件作出相應的改變,類似廣播通知 include include include include 觀察者抽象類 class cobserver virtual cobserver 狀態更新時的處理方法 virtual void upd...
C 觀察者模式(Observer)
理解 訂閱 發布。把所有需要通知的物件新增到發布者類裡面。發布者更改自己狀態後通知觀察者 using system.collections.generic using system.windows.forms namespace designmode.observer public class we...
c 觀察者模式(observer)
觀察者模式 定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。它還有兩個別名,依賴 dependents 發布 訂閱 publish subsrcibe 可以舉個部落格訂閱的例子,當博主發表新文章的時候,即博主狀態發生了改 變,那些訂閱的讀者就會...