引言
觀察者模式是一種行為型設計模式,它允許物件之間建立一種一對多的關系,使得當一個物件狀態改變時,所有依賴它的物件都能夠自動得到通知并更新自己的狀態,該模式可以幫助我們實作松耦合的系統,以便更好地應對變化和擴展,
在觀察者模式中,有兩個角色:觀察者和被觀察者,被觀察者負責維護觀察者串列,并在狀態發生改變時通知觀察者;觀察者則負責接收被觀察者的通知并進行相應的處理,
下面我們通過一個簡單的例子來說明觀察者模式的用法,假設我們要實作一個計數器,每次計數器增加時需要通知所有的觀察者,
觀察者
先定義一個介面IObserver
,用于定義觀察者的行為,該介面只有一個方法Update
,用于接收被觀察者的通知并更新觀察者的狀態,
public interface IObserver
{
void Update(int count);
}
再定義一個觀察者實作ConsoleObserver
,它負責在控制臺上輸出計數器的值,
public class ConsoleObserver : IObserver
{
public void Update(int count)
{
Console.WriteLine($"Count = {count}");
}
}
被觀察者
定義一個被觀察者Counter
,它負責維護觀察者串列,并在計數器增加時通知觀察者,
public class Counter
{
private int count = 0;
private List<IObserver> observers = new List<IObserver>();
public void AddObserver(IObserver observer)
{
observers.Add(observer);
}
public void RemoveObserver(IObserver observer)
{
observers.Remove(observer);
}
public void Increment()
{
count++;
NotifyObservers();
}
private void NotifyObservers()
{
foreach (IObserver observer in observers)
{
observer.Update(count);
}
}
}
然后可以定義一個觀察者ConsoleObserver
,一個被觀察者Counter
,再計數器增加時,通知ConsoleObserver
輸出到控制臺,
Counter counter = new Counter();
IObserver consoleObserver = new ConsoleObserver();
counter.AddObserver(consoleObserver);
counter.Increment();
控制臺得到輸出Count = 1
,
結論
觀察者模式廣泛應用于GUI(圖形用戶界面)開發、事件驅動系統、訊息通知系統、行程間通信等場景中,
它定義了一種一對多的依賴關系,讓多個觀察者物件同時監聽某一個主題物件,當主題物件發生變化時,所有依賴于它的觀察者物件都會得到通知并自動更新,
觀察者模式的作用是將系統中的關注點分離,提高系統的可維護性、擴展性和重用性,通過該模式,主題物件和觀察者物件之間的耦合度降低,讓它們之間的關系更加松散,從而使系統更加靈活、可擴展和易于維護,
作者: Peter.Pan
出處: https://www.cnblogs.com/pandefu/>
關于作者:.Net Framework,.Net Core ,WindowsForm,WPF ,控制元件庫,多執行緒
本文著作權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出 原文鏈接,否則保留追究法律責任的權利, 如有問題, 可郵件咨詢,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/556894.html
標籤:其他
下一篇:返回列表