最近在看《深入剖析Tomcat》一书,同时,正在按照这本书内容开发一个自己的servlet容器。阅读过程中,发现的Tomcat的设计模式有:
1.单例模式。
Tomcat的容器分为Wrapper,Conetxt,Host,Engine四种。其中,Wrapper对应每一个Servlet的容器,Context则对应于应用程序的容器。因此,每一个Wrapper只能与一个Servlet相关联。因此,Wrapper使用了单例模式来保证Servlet实例的唯一性。
2.观察者模式
为了实现启动或关闭父容器即可启动或关闭组件以及子容器,Tomcat设计出一个生命周期接口Lifecycle。Context,Wrapper,Pipeline均实现了这个接口。而这个接口中提供了addLifecycleListener,removeLifecycleListener等方法来实现对这些容器或者组件在发生状态变化时通知监听者。
3.变相的迭代组合模式
同样是Lifecycle生命周期,Tomcat在启动容器时会启动子容器和组件。例如,Context的start方法中,除了完成自己的初始化之外,还会调用同样实现了Lifecycle接口的子容器数组Container[] children和Pipeline的启动方法。
4.组合
例如,SimpleContext实现了Context,Lifecycle,Pipeline三个接口,但是,其实,这些接口的功能并不直接在SimpleContext本身的方法中实现,而是通过使用成员变量pipeline,以及lifecycle来完成相关方法的实现。实际上,Tomcat在设计时并没有使用层层继承的方式来完成各个具体功能的Context类,而是把行为,例如Lifecycle,Pipeline选择使用接口实现,也就是把行为抽象成接口,使用成员变量进行组合的方式来完成设计。这也体现了设计模式的多用组合少用继承的设计思想。
5.工厂模式
HttpConnector连接器的ServerSocketFactory工厂本身的得到就是通过工厂模式来得到。
分享到:
相关推荐
Tomcat的设计模式分析 很好的资料,值得看看
Tomcat 系统架构与设计模式,第 1 部分 工作原理
介绍tomcat系统架构与设计模式的书籍,希望对大家有帮助
Tomcat 系统架构与设计模式,第 1 部分: 工作原理1
Tomcat_系统架构与设计模式,Tomcat_系统架构与设计模式
Tomcat中运用的许多经典设计模式,如模版模式、工厂模式和单例模式等。通过学习它们的实践运用能给我们以后的程序设计起到一定的借鉴作用。外观设计模式在Tomcat中有多处使用,在Request和Response对象封装中、...
Tomcat系统架构与设计模式[整理].pdf
Java详解Tomcat 的设计模式分析.doc
Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析1
本文以 Tomcat 5 为基础,也...Tomcat 的基本设计思路和架构是具有一定连续性的。 Tomcat 总体结构 Tomcat 的结构很复杂,但是 Tomcat 也非常的模块化,找到了 Tomcat 最核心的模块,您就抓住了 Tomcat 的“七寸”。
从标题看上去很大,Tomcat很复杂,不是一篇文章就能说清楚的,就算我想说恐怕我也说不清楚,我主要是想知道Tomcat如何分发请求的,如何处理多用户同时请求的,还有他的容器是如何工作的。这也是一个Web服务器要解决...
2.[NIO系列]NIO源码分析之Channel 4.分享次学习中遇到的问题 5.Tomcat中的设计模式 6.Tomcat系列阅读说明以及个感想 1. Tom
Java面试专题-面试人员必看-微服务架构面试专题系列:Tomcat+Mysql+设计模式+并发+Netty+JVM
Spring源码分析,web源码分析,Tomcat架构源码分析都是非常深入的源码级课程,期待研究设计模式和深入学习源码内功的朋友们,一定要仔细的学习研究。 (0);目录中文件数:1个 ├─3.代码.zip (1)\1.笔记;目录中文...
Tomcat_系统架构与模式设计分析.doc 构建高扩展性程序的参考!
Tomcat系统架构与设计模式.pdf
java筑基(基础)面试专题系列(一):Tomcat+Mysql+设计模式.zip