观察者和监听器模式
观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。
它将观察者和被观察者的对象分离开。提高了应用程序的可维护性和重用性,实现接口来达到松耦合的母的。
观察者Observer:所有的观察者必须实现观察者接口,这个接口只有update方法,当主题改变时,它被调用。观察者必须注册具体主题,也就是观察的对象。
可观察者Subject,即被观察者: 也就是主题,实现主题接口,每个主题可以有多个观察者。
2) 推模式:通知你发生变化的同时,通过一个参数将变化的细节传递到观察者角色中去。推模式是管你要不要,先给你啦。
这两种模式的使用,取决于系统设计时的需要。如果目标角色比较复杂,并且观察者角色进行更新时必须得到一些具体变化的信息,则“推模式”比较合适。如果目标角色比较简单,则“拉模式”就很合适。
监听器模式
监听器模式:事件源注册监听器之后,当事件源触发事件,监听器就可以回调事件对象的方法以及执行自己的方法;更形象地说,监听者模式是基于:注册-回调的事件消息通知处理模式,就是被监控者将消息通知给所有监控者。
事件:对事件源的包装
事件源:事件发生的地方,包含事件的基本信息
事件监听器(处理器):监听并负责处理事件
二者比较
实现原理和方式大致相同,事件和事件源就相当于主题,事件监听器相当于观察者;
不同的是,监听器中有事件的回调。
具体列子见 http://blog.****.net/dongnan591172113/article/details/8771441
spring中的监听器模式
1 很好定义了多事件类型
2 监听器可以为具体的事件而生
3 不同的事件可以进行不同的处理
4 支持同步异步执行以及优先级
具体例子如下



它将观察者和被观察者的对象分离开。提高了应用程序的可维护性和重用性,实现接口来达到松耦合的母的。
观察者Observer:所有的观察者必须实现观察者接口,这个接口只有update方法,当主题改变时,它被调用。观察者必须注册具体主题,也就是观察的对象。
可观察者Subject,即被观察者: 也就是主题,实现主题接口,每个主题可以有多个观察者。
除了实现注册和撤销观察者之外,观察者自身也可以撤销或者是注册到主题,具体主题还实现了notifyObservers()方法,这个方法用来在主题状态改变时更新所有观察者。具体主题也可能有设置和获取状态的方法。
两种模式
1) 拉模式:目标角色在发生变化后,仅仅告诉观察者角色“我变化了”;观察者角色如果想要知道具体的变化细节,则就要自己从目标角色的接口中得到。拉模式是想要就主动表白获取。2) 推模式:通知你发生变化的同时,通过一个参数将变化的细节传递到观察者角色中去。推模式是管你要不要,先给你啦。
这两种模式的使用,取决于系统设计时的需要。如果目标角色比较复杂,并且观察者角色进行更新时必须得到一些具体变化的信息,则“推模式”比较合适。如果目标角色比较简单,则“拉模式”就很合适。
监听器模式
监听器模式:事件源注册监听器之后,当事件源触发事件,监听器就可以回调事件对象的方法以及执行自己的方法;更形象地说,监听者模式是基于:注册-回调的事件消息通知处理模式,就是被监控者将消息通知给所有监控者。
事件:对事件源的包装
事件源:事件发生的地方,包含事件的基本信息
事件监听器(处理器):监听并负责处理事件
二者比较
实现原理和方式大致相同,事件和事件源就相当于主题,事件监听器相当于观察者;
不同的是,监听器中有事件的回调。
具体列子见 http://blog.****.net/dongnan591172113/article/details/8771441
spring中的监听器模式
1 很好定义了多事件类型
2 监听器可以为具体的事件而生
3 不同的事件可以进行不同的处理
4 支持同步异步执行以及优先级
具体例子如下