观察者模式是一种行为设计模式, 允许你定义一种订阅机制, 可在对象事件发生时通知多个 “观察” 该对象的其他对象。也就是我们常说的发布-订阅。
声明抽象观察者(订阅者),也可以是接口
public abstract class Observer
{
public abstract void Update();
}
创建具体观察者,使其继承自抽象观察者
public class ConcertSubject : Subject
{
private string _state;
/// <summary>
/// 具体被观察者状态
/// </summary>
public string State
{
get { return _state; }
set { _state = value; }
}
}
创建抽象发布者
public abstract class Subject
{
private List<Observer> observers = new List<Observer>();
...
/// <summary>
/// 通知
/// </summary>
public void Notify()
{
foreach (var item in observers)
{
item.Update();
}
}
}
创建具体发布者,继承自抽象发布者
public class ConcertSubject : Subject
{
private string _state;
/// <summary>
/// 具体被观察者状态
/// </summary>
public string State
{
get { return _state; }
set { _state = value; }
}
}
客户端代码
ConcertSubject sub = new ConcertSubject();
sub.Addach(new ConcertObserver(sub, "1"));
sub.Addach(new ConcertObserver(sub, "2"));
sub.Addach(new ConcertObserver(sub, "3"));
sub.State = "online";
sub.Notify();
可以结合委托事件实现,具体代码参考仓库代码示例
源代码仓库地址:https://github.com/luchong0813/DesignModel
原文:https://www.cnblogs.com/chonglu/p/15008592.html