C#观察者模式设计demo,观测一个值是否发生变化,如果发生变化给另一个值赋值
时间: 2024-09-11 14:13:35 浏览: 18
在C#中,观察者模式(Observer Pattern)是一种软件设计模式,它允许对象之间的一对多依赖关系,并使得当一个对象的状态发生改变时,所有依赖它的对象都会得到通知并自动更新。这里是一个简单的例子,我们将创建一个Subject(主题)类、一个Observer(观察者)类以及它们之间的交互。
首先,我们创建Subject(订阅者)类,用于存储观察者并触发变化:
```csharp
public class Subject
{
private List<IObserver> observers;
private int value;
public Subject()
{
observers = new List<IObserver>();
}
public void SetValue(int newValue)
{
if (newValue != this.value)
{
this.value = newValue;
NotifyObservers();
}
}
protected virtual void NotifyObservers()
{
foreach (var observer in observers)
{
observer.Update(value);
}
}
public void RegisterObserver(IObserver observer)
{
observers.Add(observer);
}
public void UnregisterObserver(IObserver observer)
{
observers.Remove(observer);
}
}
```
接下来,我们创建一个Observer(观察者)类,该类需要实现IObserver接口,以便接收Subject的通知:
```csharp
public interface IObserver
{
void Update(int newValue);
}
public class ConcreteObserver : IObserver
{
public void Update(int newValue)
{
Console.WriteLine($"Value changed to: {newValue}");
// 这里可以添加实际的业务逻辑,比如更新其他依赖于这个值的对象
}
}
```
现在你可以使用这些类来创建一个场景:
```csharp
public static void Main(string[] args)
{
Subject subject = new Subject();
ConcreteObserver observer1 = new ConcreteObserver();
ConcreteObserver observer2 = new ConcreteObserver();
subject.RegisterObserver(observer1);
subject.RegisterObserver(observer2);
subject.SetValue(0); // 观察者会接收到初始值
subject.SetValue(5); // 当值变化时,两个观察者都会接收到通知
}
```