使用C# (.NET Core) 实现观察者模式 (Observer Pattern) 并介绍 delegate 和 event
观察者模式 这里面综合了几本书的资料. 需求 有这么个项目: 需求是这样的: 一个气象站, 有三个传感器(温度, 湿度, 气压), 有一个WeatherData对象, 它能从气象站获得这三个数据. 还有三种设备, 可以按要求展示气象站的最新数据. WeatherData的结构如下: 有3个get方法, 分别获取最新的气温, 湿度和气压. 还有一个measurementsChanged()方法, 当任一传感器有变化的时候, 这个方法都会被调用. 总结一下项目的需求: WeatherData类有三个get方法可以获取温度, 湿度和气压 如果任何一个数据发生变化, 那么measureChanged()方法就会被调用 我们需要实现这三种显示设备: 当前天气 数据统计 天气预测 系统必须可以扩展, 其他开发者可以创建自定义展示设备. 初版代码 这个地方有个"错误", xxxDisplay都是具体的实现, 而编程规则要求是应该对接口编程而不是对实现编程. 那么什么是观察者模式? 举一个例子: 报社发行报纸 你订阅报纸, 一旦有新一期的报纸发行, 新报纸就会送到你家里, 只要你一直订阅, 你就一直会收到新报纸 你不再订阅报纸的时候, 就收不到以后的新报纸了 报社运营的时候, 一直会有人去订阅或者取消订阅报纸. 发布者 + 订阅者 = 观察者模式 Publishers +