spring ioc的最大特点是依赖注入,对于observer pattern来说,使用spring框架最大的麻烦在于registerObserver的时候,需要双方的class都已经构造成功,而且spring的配置都应当是基于接口的(否则在aop配置transaction的时候会抛异常),因此如何方便的配置是应用observer pattern的关键。
首先编写observer pattern的基础类:
java 代码
- public interface Observer {
- public void update(Object arg);
- }
-
- public class Subject {
- private List<Observer> observerList=new ArrayList<Observer>();
- public void notifyObservers(Object arg) {
- for (Observer ob: observerList) {
- ob.update(arg);
- }
- }
-
- public void registerObserver(Observer observer) {
- observerList.add(observer);
- }
- }
在appfuse中,所有的service类都是继承了BaseManager,我就让BaseManager extends Subject,这样所有的manager就可以很方便的增加observer了。
编写类实现observer接口。在manager类适当的位置增加notifyObservers()方法。
最后,在配置文件中,使用如下的配置来完成observer的注册:
xml 代码
- <bean id="registerAreaObjserver"
- class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
- <property name="targetObject"><ref local="areaManager"/></property>
- <property name="targetMethod"><value>registerObserver</value></property>
- <property name="arguments">
- <list>
- <ref bean="observerClass"/>
- </list>
- </property>
- </bean>
这种配置的方法又简洁又清晰,而且非常符合DI精神,这样就可以随时关联适当的subject/observer了。
分享到:
相关推荐
该示例是翻写一老外Observer Pattern的例子,本人觉得该示例是对该模式的非常精典的说明,于是花点功夫来翻写它,因为他的代码没有注释说明该模式的设计思想怎样体现在代码中去,所以,本人结合代码注释了关键代码...
设计模式之观察者模式ObserverPattern
ObserverPattern.unitypackage是一个以unity为例写的观察者模式的应用举例。有需要的同学请下载!
matlab开发-Observerpattern。观察者模式示例
Swift µframework 实现观察者模式Observer pattern
定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。
设计模式之观察者模式和静态工厂的结合实践
例题代码:李先生希望及时知道气象站的天气预报及旅行社的每日旅行信息。 李先生就是具体的一个观察者,而气象站及旅行社就成为了主题。
这是关于C#中的观察者模式的教程文章。我们首先介绍作为GoF模式之一的经典观察者模式。观察者模式通过使用事件机制集成到C#中,这将在接下来讨论。然后,我们讨论与在C#中使用事件/事件处理程序相关的问题。
设计模式之观察者模式和静态工厂的结合实践
Observer HeadFirst design pattern C++ version
head-first-design-pattern—02-observer-pattern(观察者模式),融入了个人的见解,里面包含错误的实现和正确的标准实现,你可以对比学习,加深对模式的理解
组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的...
用state模式和observer模式一些模式QQ在线状态 com.designpattern.state_observer.rar
文章链接:https://blog.csdn.net/qq_44901285/article/details/116092808?spm=1001.2014.3001.5501 Spring事件机制(Event)-- 基于观察者模式实现多任务同时处理(源码)
observer-pattern-demo 观察者模式示例
NULL 博文链接:https://justcoding.iteye.com/blog/1476165
观察者模式 New's Station Observer Pattern演示