设计模式:观察者模式(二)——C#内置接口实现观察者模式
通过C#的内置观察者接口实现观察者模式 1. 接口介绍 C#内部提供了IObservable 和IObserver 两个泛型接口,IObservable是可观察的,就是主题(Subject)要实现的接口,IObserver就是观察者需要实现的接口,接口定义如下: //T:提供通知信息的对象。 public interface IObservable<out T> { //通知提供程序观察程序将接收通知。 IDisposable Subscribe(IObserver<T> observer); } //T:提供通知信息的对象。 public interface IObserver<in T> { //通知观察者提供程序已完成发送基于推送的通知。 void OnCompleted(); //通知观察者提供程序遇到错误情况。 void OnError(Exception error); //向观察者提供新数据。 void OnNext(T value); } 2. Demo背景 这里与 上一篇 一致:设计一个气象观测站,测量温度、湿度、气压等,会有多种公告板如气温布告板,舒适度布告板,天气预报布告板等等。每当天气数据变化时,这些布告板的数据就需要相应自动更新。 3. 代码设计 首先建一个WeatherData,这是主题向观察者传递的数据。 public struct