快速业务通道

模式实践:观察者模式与Spring - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
hrows BaseException    * @author Ai92    * </pre>    * Created on :2005-7-4 20:29:17    * </pre>    */    public void notifyForList(Map para) throws BaseException {      Iterator it = allConfig.iterator();      while (it.hasNext()) {        String property = (String) it.next();        StaffingObserver observer = (StaffingObserver) getBean(property);        if (observer != null)            observer.update(para);        else {           log.warn("bean ''" + property + "''does not exist.");        }     }    }    private Object getBean(String beanName) {      return TbApplicationContext.getWac().getBean(beanName);    }    /**    * @param allConfig 设置 allConfig    */    public void setAllConfig(List allConfig) {      this.allConfig = allConfig;    }    private List allConfig; }[/php]

下面是Spring framework配置文件的一个片断——它应该出现在用到目标角色的具体客户程序对应的Spring配置文件中。它将具体观察者的别名存放在一个list里面,使用Spring为生成的目标角色注入。

[php]<!-- this the Spring config file for register Observers --> <property name="obsevable">    <bean class="com.ai92.service.TestObservable"> <property name="allConfig">          <list>           <value>terminateDispatch</value> <value>terminateParttime</value> </list>     </property> </bean> </property>[/php]

下面要做的就是要将具体观察者的别名与每一个具体观察者的类关联起来:

[php]<!-- the spring config file for Concrete Subject --> <bean id="terminateDispatch" parent="baseTxProxy">     <property name="target">        <bean class="com.ai92.service.TerminateDispatch">          <property name="dispatchDAO"> <ref bean="dispatchDAO"/> </property>        </bean>     </property> </bean>[/php]

这样,一个完整的观察者模式便在Spring framework中搭建起来了。在Spring framework的协助下,观察着模式变得更加灵活了。但是也增加了使用难度和调试难度,如果没有良好的命名机制、有帮助的注释和文档,初来乍到的人恐怕很难找到问题的所在。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号