李建忠設計模式 觀察者模式

2021-10-05 23:35:32 字數 2079 閱讀 1154

有上面結構圖可以看出,在觀察者模式的結構圖有一下角色:

抽象主題角色(subject):抽象主題把所有觀察者物件的引用儲存在乙個列表中,並提供增加和刪除觀察者物件的操作,抽象主題角色又叫做抽象被觀察者角色,一般由抽象類或介面實現。

抽象觀察者角色(observer):為所有具體觀察者定義乙個介面,在得到主題通知時更新自己,一般由抽象類或介面實現。

具體主題角色(concertesubject):實現抽象主題介面,具體主題角色又叫做具體被觀察者角色。

具體觀察者角色(concreteobserver):實現抽象觀察者角色所要求的的介面,以便使自身轉台與主題的狀態相協調。

訂閱銀行簡訊業務,當我們賬戶餘額發生改變,我們就會收到相應的簡訊。

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace pattern

/// /// 取錢

///

///

public void getmoney(int money)

public int _balance

set}

public bool _ischanged

set

}public datetime _datetime

set}

public string _name

set

}//更新賬戶狀態

public abstract void updatemoney(int money,datetime datetime);

}//抽象通知機制,支援多個觀察者,在這裡subject和concretesubject可以寫一塊,也可以抽取出來。

public class subject

//刪除儲戶

public void _remove(abstractdepositor observer)

//通知儲戶賬戶變化情況

public void onnotify()}}

}public class person1 : abstractdepositor

public override void updatemoney(int currentbalance,datetime datetime)

的賬戶餘額在的時候發生變化,剩餘餘額為:",this._name,datetime,currentbalance);}}

public class person2 : abstractdepositor

public override void updatemoney(int currentbalance,datetime datetime)

的時候發生變化,剩餘餘額為:", datetime,currentbalance);}}

class program}}

優點:

(1)、觀察者模式實現了表示層和資料邏輯層的分離,並定義了穩定的更新訊息傳遞機制,並抽象了更新介面,使得可以有各種各樣不同的表示層,即觀察者。

(2)、觀察者模式在被觀察者和觀察者之間建立了乙個抽象的耦合,被觀察者並不知道任何乙個具體的觀察者,只是儲存著抽象觀察者的列表,每個具體觀察者都符合乙個抽象觀察者的介面。

(3)、觀察者模式支援廣播通訊。被觀察者會向所有的註冊過的觀察者發出通知。

缺點:(1)、如果乙個被觀察者有很多直接和間接的觀察者時,將所有的觀察者都通知到會花費很多時間。

(2)、雖然觀察者模式可以隨時使觀察者知道所觀察的物件傳送了變化,但是觀察者模式沒有相應的機制使觀察者知道所觀察的物件是怎樣發生變化的。

(3)、如果在被觀察者之間有迴圈依賴的話,被觀察者會觸發它們之間進行迴圈呼叫,導致系統崩潰,在使用觀察者模式應特別注意這點。

c#設計模式之十六觀察者模式(observer pattern)【行為型】

李建忠設計模式——觀察者模式

李建忠設計模式(一)

目錄 1.軟體設計的目標 2.物件導向設計原則 1.重新認識物件導向 2.物件導向設計原則 1.依賴倒置原則 dip 2.開放封閉原則 ocp 3.單一職責原則 srp 4.liskov替換原則 lsp 5.介面隔離原則 isp 6.有限使用物件組合,而不是類繼承 7.封裝變化點 8.針對介面程式設...

李建忠設計模式 原型模式

目錄 1.原型模式 prototype 1.動機 2.定義 3.結構圖 4.模式的組成 2.例項 3.要點總結 4.參考 使用原型例項指定建立物件的種類,然後通過拷貝這些原型來建立新的物件。模式設計 gof 原型類 prototype 原型類,宣告乙個clone自身的介面 具體原型類 concret...

李建忠設計模式 構建器模式

目錄 1.構建器模式 1.動機 2.模式定義 3.結構圖 4.模式的組成 2.例項 1.描述 2.3.要點總結 4.實現要點 5.參考 將乙個複雜物件的構建與表示相分離,使得同樣的構建過程 穩定 可以建立不同的表示 變化 1 抽象建造者角色 builder 為建立乙個product物件的各個部件指定...