IBM开发者上面有淘宝架构师写的文章《Tomcat 系统架构与设计模式》(http://www.ibm.com/developerworks/cn/java/j-lo-tomcat2/)。结合这2 篇文章的分析,对tomcat对设计模式的使用对原代码进行了分析。
首先看下“门面模式”,首先看下门面模式的介绍:[size=10.5pt; font-family: 宋体;]一个大系统会有很多小系统,每个小系统之间又会有通信。为了保护每个小系统内部的数据,可以为每个小系统设计一个门面,把系统间通信的数据封装起来,提供给其他系统调用。这样的做法,简化层于层的依赖关系,提高子系统的独立性和可移植性。在阎宏的《设计与模式》中比将门面模式比做,医院的每一个科室,有挂号,门诊,从现实社会的角度对门面模式进行了阐述。
接下来结合源代码,来看下门面模式在tomcat中的应用。
org.apache.catalina.core.StandardWrapperFacade封装了获取Servlet的信息,对外提供信息。用户就不用访问StandardWrapper来获取信息。结合上面的类图,看下StandardWrapperFacade的代码就会很明白门面模式在此处的运用了。
private ServletConfig config = null;//此处私有,用于保护子系统信息
//构造器,初始化
public StandardWrapperFacade(StandardWrapper config) {
super();
this.config = (ServletConfig) config;
}
//以下是所有获取信息的方法,是从StandardWrapper 类中获取信息
public String getServletName() {
return config.getServletName();
}
public ServletContext getServletContext() {
if (context == null) {
context = config.getServletContext();
if ((context != null) && (context instanceof ApplicationContext))
context = ((ApplicationContext) context).getFacade();
}
return (context);
}
public String getInitParameter(String name) {
return config.getInitParameter(name);
}
public Enumeration getInitParameterNames() {
return config.getInitParameterNames();
}
同时,我们也可以看到其他代码也用到了门面模式。tomcat源代码中有很好的命名习惯,就是对于门面模式使用的类都用Facade(表面,假象,外观)。其中对于Request和Response都有相应的RequestFacade和ResponseFacade。
分享到:
相关推荐
《Tomcat源码分析1——服务启动与架构详解》 Tomcat,作为一款广泛应用的开源Java Servlet容器,其内部架构和启动流程对于深入理解和优化Web应用程序至关重要。本文将重点解析Tomcat启动时的关键步骤和核心组件,...
《深入理解Tomcat源码分析1:Connector配置详解》 Tomcat,作为广泛使用的Java Servlet容器,其核心组件之一就是Connector,它负责处理Web服务器与客户端之间的通信。本篇文章将详细探讨Tomcat Connector的种类、...
7. "tomcat源码分析之一架构.pdf":可能涵盖了Tomcat的整体架构,包括Catalina、 Coyote、Jasper等主要模块的功能和相互关系。 8. "HTTP协议详解.pdf":作为基础,此文档提供了HTTP协议的详细讲解,帮助读者理解...
《Tomcat6源码分析——深入理解Web服务器的运行机制》 Tomcat6作为Apache软件基金会的Jakarta项目的一部分,是一款广泛使用的Java Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,为开发和部署...
### Tomcat架构的源码分析 #### 一、Tomcat的架构概述 Tomcat作为一款广泛使用的开源Java Servlet容器,其内部架构设计简洁而高效。本文档将对Tomcat的架构进行详细介绍,并从源码层面深入分析其核心组成部分。...
【TOMCAT源码分析(启动框架)】 Tomcat是一款广泛应用的开源Java Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,为Web应用程序提供了运行环境。本篇文章将深入探讨Tomcat的系统框架及其启动流程...
Tomcat源码剖析 : 整体架构 层层分析 源码解析 架构分析 (Http服务器功能:Socket通信(TCP/IP)、解析Http报文 Servlet容器功能:有很多Servlet(自带系统级Servlet+自定义Servlet),Servlet处理具体的业务逻辑...
tomcat的基础脚本分析 tomcat的源码启动分析 tomcat的web应用启动分析 tomcat的socket分析 tomcat的cocket与容器对接时序分析
Apache Tomcat源码分析 Apache Tomcat是一款广泛应用的开源Java Servlet容器,它是Java EE Web应用程序的标准实现。Tomcat源码的深入理解对于Java Web开发者来说是至关重要的,它可以帮助我们了解HTTP服务器的工作...
二、Tomcat源码分析 1. **启动流程**:从`bin/catalina.sh`或`bin/catalina.bat`开始,通过`org.apache.catalina.startup.Bootstrap`启动Catalina,加载配置文件,初始化服务器,最后启动主循环监听端口。 2. **...
【标题】"Tomcat源码分析" 在深入探讨Tomcat源码之前,首先需要了解Tomcat是什么。Tomcat是一款开源的、基于Java的Web应用服务器,由Apache软件基金会开发。它实现了Java Servlet和JavaServer Pages(JSP)规范,...
对 NIO 模式,请求的流程描述的很详细。值得去仔细的研究。
本文将详细探讨“tomcat源码依赖包”这一主题,旨在帮助读者更好地理解和构建Tomcat6及其之前版本的源代码。 首先,我们来谈谈“jar”标签。在Java开发中,jar(Java Archive)文件是一种打包格式,它将类文件、...
Apache Tomcat 8.5.23 源码分析 Apache Tomcat 是一个开源的、免费的Web服务器和Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,是开发和部署Java Web应用的重要平台。深入理解Tomcat的源码有助...