我要做的就是实现观察者模式。
所以,我想出了这个解决方案:
我们有一个 PoliceHeadQuarters,其主要工作是向所有订阅它的人发送通知。考虑到 DSP、Inspector 和 SubInspector 类订阅了 PoliceHeadQuarters。
使用我写的事件和代表
public class HeadQuarters
{
public delegate void NewDelegate(object sender, EventArgs e);
public event EventHandler NewEvent;
public void RaiseANotification()
{
var handler = this.NewEvent;
if (handler != null)
{
handler(this, new EventArgs());
}
}
}
public class SubInspector
{
public void Listen(object sender, EventArgs e)
{
MessageBox.Show(string.Format("Event Notification received by sender = {0} with eventArguments = {1}", sender, e.ToString()));
}
}
public class Inspector
{
public void Listen(object sender, EventArgs e)
{
MessageBox.Show(string.Format("Event Notification received by sender = {0} with eventArguments = {1}", sender, e.ToString()));
}
}
这就是我调用它的方式
var headQuarters = new HeadQuarters();
var SubInspector = new SubInspector();
var Inspector = new Inspector();
headQuarters.NewEvent += Inspector.Listen;
headQuarters.NewEvent += SubInspector.Listen;
headQuarters.RaiseANotification();
因此,只要调用 RaiseANotification() 函数,Inspector 和 SubInspector 类都会收到通知。
似乎 DotNet Framework 4、4.5 支持一种称为 IObserver 和 IObservable 的新方式。
谁能给我一个在上述场景中使用 IObservable 和 IObserver 模式的超级简单示例?我用谷歌搜索只是发现互联网上的可用示例过于臃肿且难以理解。
我的小窍门:(可能我认为这是错误的)
class DSP : IObserver //since it observes the headquarters ?
class PoliceHeadQuarters: IObservable // since here's where we send the notifications ?
提前致谢。
编辑:有人还说 MSDN 文档对于 IObservable @ IObservable 与普通事件也不正确,或者我为什么要使用 IObservable?.