我最近开始研究C#,但是我一辈子都无法弄清楚在用语言实现观察者/可观察模式时委托的工作方式。
有人可以给我一个超简单的例子吗?我 已经用 谷歌搜索了,但是我发现的所有例子要么都是针对特定问题的,要么太“ blo肿”。
观察者模式通常通过事件来实现。
这是一个例子:
using System; class Observable { public event EventHandler SomethingHappened; public void DoSomething() => SomethingHappened?.Invoke(this, EventArgs.Empty); } class Observer { public void HandleEvent(object sender, EventArgs args) { Console.WriteLine("Something happened to " + sender); } } class Test { static void Main() { Observable observable = new Observable(); Observer observer = new Observer(); observable.SomethingHappened += observer.HandleEvent; observable.DoSomething(); } }
有关更多详细信息,请参见链接的文章。
请注意,以上示例使用C#6 空条件 运算符DoSomething安全地实现了处理SomethingHappened尚未订阅的情况,因此为null。如果您使用的是旧版本的C#,则需要这样的代码:
DoSomething
SomethingHappened
public void DoSomething() { var handler = SomethingHappened; if (handler != null) { handler(this, EventArgs.Empty); } }