到目前为止,我找不到答案,可能只是缺少合适的关键字来搜索。
我想在 C# 中实现一个观察者模式,所以任何观察者对象都可以订阅一个主题对象,然后接收它的所有通知。然后它根据通知类型决定它是否重要。
public class Subject
{
private List<Observer> observers;
public void AttachObserver(Observer Observer)
{
this.observers.Add(Observer);
}
public void DetachObserver(Observer Observer)
{
this.observers.Remove(Observer);
}
public void NotifyObservers(CommonNotification Notification) // who we are, what kind of notification, bla bla
{
foreach(Observer Observer in observers)
{
Observer.OnNotify(Notification);
}
}
}
public class Observer
{
public abstract void OnNotify(CommonNotification Notification);
}
所以任何想要订阅 Subject 的对象都需要继承 Observer 类。但是怎么做呢?我的 MainForm 是基于 Form 的。如果我用通用对象替换 Observer 类,它将不会实现 OnNotify() 事件。
我在这里想念什么?我知道我应该使用事件处理程序正确实现它,但为了了解基本设计模式的工作原理,我宁愿先自己实现。