1.观察者模式的定义:
观察者设计模式定义了对象间的一种一对多的组合关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新。
2.观察者模式的原理:
实现观察者模式有很多形式,比较直观的一种是使用一种“注册——通知——撤销注册”的形式。下面的三个图详细的描述了这样一种过程:其中,观察者模式定义了四种角色:抽象主题、具体主题、抽象观察者、具体观察者。 抽象主题(Subject):该角色是一个抽象类或接口,定义了增加、删除、通知观察者对象的方法。 具体主题(ConcreteSubject):该角色继承或实现了抽象主题,定义了一个集合存入注册过的具体观察者对象,在具体主题的内部状态发生改变时,给所有注册过的观察者发送通知。 抽象观察者(Observer):该角色是具体观察者的抽象类,定义了一个更新方法。 具体观察者(ConcrereObserver):该角色是具体的观察者对象,在得到具体主题更改通知时更新自身的状态
3.本项目中的运用场景:
spring的事件驱动模型使用的是 观察者模式,就是通过ApplicationEvent抽象类和ApplicationListener接口,可以实现ApplicationContext事件处理,监听器在处理Event时,通常会进行判断传入的Event是不是自己所想要处理的,使用instanceof关键字。ApplicationEventMulticaster事件广播器实现了监听器的注册,一般不需要我们实现,只需要显示的调用applicationcontext.publisherEvent方法即可。
4.带来的好处:
首先,封装了设计模式,便于使用者,非常简单,快捷。
其次,降低了程序之间的耦合
原文地址:https://www.cnblogs.com/ustc-lx/p/9801671.html