【设计模式】观察者模式
观察者模式是一种行为设计模式,它定义了对象之间的一对多关系,当一个对象状态发生改变时,它的所有依赖者(观察者)都会收到通知并自动更新。
以下是实现代码:
// 主题接口
internal interface ISubject
{
void Add(IObserver obj);
void Del(IObserver obj);
void Notify(string msg);
}
// 观察者接口
internal interface IObserver
{
void Update(string msg);
}
// 具体主题类
internal class ContextSubject : ISubject
{
List<IObserver> Observers = new List<IObserver>();
public void Add(IObserver obj)
{
Observers.Add(obj);
}
public void Del(IObserver obj)
{
Observers.Remove(obj);
}
public void Notify(string msg)
{
foreach (var observer in Observers)
{
observer.Update(msg);
}
}
public void ShowMsg(string msg)
{
Notify(msg);
}
}
// 具体观察者类
internal class ContextObserver : IObserver
{
public string Name { get; set; } = string.Empty;
public ContextObserver(string name)
{
this.Name = name;
}
public void Update(string msg)
{
Console.WriteLine($"##> {this.Name} get msg: {msg}");
}
}
// 具体调用逻辑
ContextSubject subject = new ContextSubject();
ContextObserver observer1 = new ContextObserver("user1");
ContextObserver observer2 = new ContextObserver("user2");
subject.Add(observer1);
subject.Add(observer2);
subject.Notify("test msg 1");
Console.ReadKey();
示例代码: 示例代码
如果有错误的地方,还望各位多多指点
写个博客,来记录自己成长的一些经历,或许也能顺便帮助他人。
由于使用GitHub仓库作为图床,会有图片显示不出来的情况。