首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

再读Tomcat5.5上的‘观察者模式’

2012-09-04 
再读Tomcat5.5下的‘观察者模式’最近我正在根据《How Tomcat Works》这本书的讲解,阅读Tomcat 7的源码但这本

再读Tomcat5.5下的‘观察者模式’
最近我正在根据《How Tomcat Works》这本书的讲解,阅读Tomcat 7的源码
但这本书的源码讲解基于Tomcat 4
讲到第5章:关于Tomcat4的生命周期的时候
我就看不大明白Tomcat 7的源码,于是我从Apache Tomcat网站又下载了Tomcat 5.5的源码
进一步了解这一章,这一章讲的就是Tomcat的生命周期Lifecycle,其中最主要的就是利用了
设计模式中相当经典的模式:观察者模式。

现在推荐一下相关文章和相关类图,学习设计模式而不去看类图或是看不懂,那是相当大的一个阻碍。
1.
标题:《设计模式之:解剖观察者模式》
网址:http://www.iteye.com/topic/102068
内容:从最基础的方面剖析了'观察者模式'
发表时间:2007-07-17(相当的早,我还没出道就发布了...)
类图:



2.
标题:《Tomcat源码---容器生命周期管理(Lifecycle)一》
网址:http://wuquanyin1011.iteye.com/blog/628993
内容:从源码上讲到了‘观察者模式’的运用,这也就是我文章题目只能写再读了,人家都分析过了...
发表时间:2010-03-31
类图:



3.
标题:《Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析》
网址:http://www.ibm.com/developerworks/cn/java/j-lo-tomcat2/
内容:讲解了Tomcat中几个最重要的模式,但这是第2部分的内容,大家也要看一下第1部分的内容
发表时间:2010-05-27
类图:




如果是新接触观察者模式或是还没深入理解观察者模式的朋友一定要看推荐的第一篇文章。这样下面的东西就好理解。

以下都是Tomcat5.5的相关源码,而在Tomcat 7中又增添了新的接口和类来管理生命周期。
这里我把Tomcat构建观察者模式来处理Tomcat生命周期的所有相关类和接口都抽了出来
删除了不必要的类和代码,因为我们只是为了要探究下观察者模式。

其中有以下类和接口:(上面的相关类图对帮助理解这6个类和接口之间的依赖关系是非常有帮助的,所以我先贴出了类图)
Lifecycle.java:抽象被观察者
StandardServer.java :具体被观察者(这个类是Tomcat5.5下实现的众多具体被观察者中的一个)
LifecycleListener.java : 抽象观察者
ServerLifecycleListener.java : 具体观察者(这个类是Tomcat5.5下实现的众多具体观察者中的一个)
这里还要提下:在Tomcat 7中,具体被观察者和具体观察者中的功能都被抽出来统一管理
LifecycleSupport.java :具体被观察者的代理类,为了把所有具体被观察者的共同操作统一管理(在推荐第2篇文章中那哥们说这里用了‘适配器模式’)
LifecycleEvent.java :事件类

下面根据顺序放出各个类的具体实现代码

Lifecycle.java:抽象被观察者

      
谢支持,不要光看头像,头像是我老婆 23 楼 tianlovv 2011-04-08   讲的不错,也计划着要看tomcat源码了,LZ这么一讲让我对研究tomcat源码兴趣大增,哈哈!关于为什么clone数组那,我想到有两点
1  保证了数组的不变性,其它线程对数组操作与这个副本无关
2  缩小同步代码块。因为可以把执行业务操作也放在同步块中,这样不需要clone了,但通常业务操作是比较占用时间的,这样会影响性能
问一下tomcat7中是用什么容器装载元素的
24 楼 kanny87929 2011-04-08   tianlovv 写道讲的不错,也计划着要看tomcat源码了,LZ这么一讲让我对研究tomcat源码兴趣大增,哈哈!关于为什么clone数组那,我想到有两点
1  保证了数组的不变性,其它线程对数组操作与这个副本无关
2  缩小同步代码块。因为可以把执行业务操作也放在同步块中,这样不需要clone了,但通常业务操作是比较占用时间的,这样会影响性能
问一下tomcat7中是用什么容器装载元素的



应该说,tomcat 7是用什么数据结构来存储元素的更专业...
tomcat 7中就是直接操作数组,把复制出副本这个操作给删除了。

热点排行