笔记 您可以查看我个人网站上的其他帖子: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