再读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:抽象被观察者