Note You can check other posts on my personal website: 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 List<IObserver> observers = new List<IObserver>(); 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# 中實現物件之間溝通的強大方法。它促進鬆散耦合,並且在事件驅動架構中特別有用。透過理解和實現這種模式,您可以編寫更易於維護和擴展的程式碼。
以上是C# |理解觀察者模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!