筆記 您可以查看我個人網站上的其他帖子:https://hbolajraf.net
觀察者模式是一種行為設計模式,其中一個物件(稱為主體)維護其依賴項(稱為觀察者)的列表,並通常透過呼叫其中一個方法來通知它們任何狀態變更。這種模式促進了物件之間的鬆散耦合,因為觀察者只知道主題而不知道彼此。在 C# 中,這種模式通常用於事件驅動程式設計。
讓我們透過C#的詳細範例來了解觀察者模式。
首先,我們為主題定義一個介面。此介面將包含註冊、取消註冊和通知觀察者的方法。
public interface ISubject { void RegisterObserver(IObserver observer); void UnregisterObserver(IObserver observer); void NotifyObservers(); }
接下來,我們為觀察者定義一個介面。此介面將包含一個方法,當主體需要通知觀察者時將呼叫該方法。
public interface IObserver { void Update(); }
現在,讓我們實作一個實作 ISubject 介面的具體主題類別。
public class ConcreteSubject : ISubject { private Listobservers = new List (); public void RegisterObserver(IObserver observer) { observers.Add(observer); } public void UnregisterObserver(IObserver observer) { observers.Remove(observer); } public void NotifyObservers() { foreach (var observer in observers) { observer.Update(); } } }
接下來,讓我們實作一個具體的觀察者類,該類別實作了 IObserver 介面。
public class ConcreteObserver : IObserver { public void Update() { Console.WriteLine("Observer notified of state change."); } }
現在,讓我們看看如何一起使用這些類別。
class Program { static void Main(string[] args) { ConcreteSubject subject = new ConcreteSubject(); ConcreteObserver observer1 = new ConcreteObserver(); ConcreteObserver observer2 = new ConcreteObserver(); subject.RegisterObserver(observer1); subject.RegisterObserver(observer2); subject.NotifyObservers(); subject.UnregisterObserver(observer1); subject.NotifyObservers(); } }
在這個例子中,ConcreteSubject是主體,ConcreteObserver是觀察者。當呼叫 NotifyObservers() 時,兩個觀察者都會收到狀態變更的通知。註銷一名觀察員後,僅通知剩餘的觀察員。
觀察者模式是在 C# 中實現物件之間溝通的強大方法。它促進鬆散耦合,並且在事件驅動架構中特別有用。透過理解和實現這種模式,您可以編寫更易於維護和擴展的程式碼。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3