内容
今天学习了观察者模式。
1.观察者模式又叫发布-订阅模式。
2.观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生改变时,会通知所有观察者对象,使他们能够自动更新自己。
3.观察者模式所做的工作其实就是在接触耦合。让耦合的双方都依赖于抽象,而不是依赖于具体。从而使得各自的变化都不会影响另一边的变化。
收获
1.观察者模式是一种日常编程中非常容易见到的设计模式,所以很多以事件驱动的软件编程都可以参考观察者模式进行设计。
2.QT中的信号与槽,C#中的委托,以及MQTT支持的订阅和发布都是基于观察者模式设计的。
3.当以事件为驱动的编程中,先总结出主题抽象的基类(包括:添加观察者、删除观察者、更新主题)
4.然后设计观察者基类(包括:主题更新后需要完成的动作)
5.再设计观察者具体类(包括:主题更新后需要完成的具体动作)
6.再设计主题的具体类(包括:所有观察者的列表,添加观察者、删除观察者的具体实现、主题改变后的通知操作)
7.当主题状态改变后,主题具体类通过内部的观察者列表通知所有观察者,观察者完成具体的动作。