Tomcat中的设计模式

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

1     外观模式

1.1   定义

外观模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。它是为子系统中的一组接口所提供的一个一致的界面应用:重新进行类的设计,将原来分散在源码中的类/结构及方法重新组合,形成新的、统一的接口,供上层应用使用。

1.2   实例

http://www.jianshu.com/p/dee45d97a4fa

在写一个简单的tomcat容器时,需要在一个处理器类ServletProcessor里面把request,response这两个对象传递给Servlet类的service(request, response)方法供servlet开发人员使用

这里的传递的requestresponse对象由tomcat开发人员创建,除了实现继承自javax.sevrlet.request接口和javax.servlet.response接口的方法外它们还有各自的公共方法,
把这样的对象直接给servlet开发人员存在一个安全隐患,servlet开发人员可以将request,和response对象做向上转型之后调用它们自己的公共方法,但这些方法在servlet中应该是不可用的

我们利用组合的方式分别建立requestresponse的外观类。然后通过requestresponse初始它们的外观类对象,并把它们的外观类对象传给Service()方法即可

RequestFacade 外观类包含类request,并且和request类都继承了ServletRequest接口,所以servlet程序员就可以通过外观类来调用ServletRequest接口的所有方法,同时有效屏蔽了request类自己的公共方法。ResponseFacade具有同样的功能。

2     观察者模式

http://mabusyao.iteye.com/blog/1109418

Lifecycle

Tomcat中所有可以被“Container”包含的组件(包括Container本身),都实现了这个接口。它提供了修改组件状态的方法,并使用观察者模式使得监控组件状态变化及在生命周期的不同阶段进行操作的成为可能。

 

修改组件状态的方法包括:

init()

start()

stop()

destroy()

 

组件的状态包括:

BEFORE_INIT

AFTER_INIT

BEFORE_START

START

AFTER_START

BEFORE_STOP

STOP

AFTER_STOP

BEFORE_DESTROY

AFTER_DESTROY

PERIODIC(周期性的事件)

CONFIG_START

CONFIG_STOP

 

所有的这些状态发生时,都会触发相应的事件,想要监听到这些事件并执行相应的操作,就需要用以下的方法注册成为其监听者:

addLifecycleListener(LifecycleListenerlistener)

findLifecycelListener()

removeLifecycleLisnter(LifecycleListenerlistener)

 

同时,也可以随时调用以下方法获得当前状态:

getState()

getStateName()

 

LifecycleListener

想要注册监听某个类的状态变化,就需要继承接口LifecycleListener,这个接口只声明了一个方法:

lifecyleEvent(LifecycleEventevent)

 

你需要在具体实现中决定需要监听哪些事件,对这些事件相应的做出什么样的操作。

 

LifecycleEvent

用来实现某个事件的final类,它的构造函数接收3个参数:

publicLifecycleEvent(Lifecycle lifecycle, String type, Object Data)

 

参数分别表示产生当前eventLifecycle类,类型以及相应的数据。许多时候我们只需要设置第一个和第二个参数即可。

 

LifecycleBase& LifecycleSupport

LifecycleBase类提供了Lifecycle接口的默认实现,对于事件处理的具体实现是在LifecycleSupport类中,LifecycleBase的方法仅是简单的代理到LifecycleSupport的相应方法。

 

LifecycleSupport中的维护了一个LifecycleListener的数组,同时利用一个同步锁来确保每次只有一个线程在操作

Tomcat设计模式分析 Tomcat设计模式分析 很好的资料,值得看看 立即下载

相关推荐

Tomcat涉及的设计模式

一、门面设计模式 门面设计模式Tomcat 中有多处使用,在 Request 和 Response 对象封装中、Standard Wrapper 到 ServletConfig 封装中、ApplicationContext 到 ServletContext 封装中等都用到了这种设计模式。 1.1 原理 这么多场合都用到了这种设计模式,那这种设计模式究竟能有什么作用呢?顾名思义,就是将一个东西封...

蘑菇蘑菇不会开花的专栏 1118

Tomcat设计模式

文章目录1 Tomcat设计模式1.1 门面设计模式1.1.1 门面设计模式的原理1.1.2 Tomcat的门面设计模式示例1.2 观察者设计模式1.2.1 观察者模式的原理1.2.2 Tomcat的观察者模式示例1.3 命令设计模式1.3.1 命令模式的原理1.3.2 Tomcat中命令模式的示例1.4 责任链设计模式1.4.1 责任链模式原理1.4.2 Tomcat中的责任链模式示例 1 Tomcat设计模式Tomcat中用了很多设计模式,如模板模式、工厂模式和单例模式等一些常用的设计模式,对这

上善若泪 1128

Tomcat设计模式

Tomcat框架中设计到的设计模式包括:模板模式、工厂模式、单例模式、门面模式、观察者模式、责任链模式、命令模式等,下面分别对这些设计模式做一些简单的解释。 1、门面模式:该模式一般用在一个大的系统中有多个子系统,子系统之间进行相互通信,每个子系统又不能将各自内部的数据都暴露给对方,所以每个子系统都设计一个门面,将别的系统感兴趣的数据封装起来,通过这个门面来访问。Request和Respoons...

哆啦A梦 355

Tomcat中涉及哪些设计模式

参考网上博客内容整理而来 1. 工厂模式 在Tomcat启动的过程中,调用Connector组件的startInternal()方法: //Connector.java protocolHandler.start(); //AbstractProtocol.java endpoint.start(); //AbstractEndpoin...

赱乂的博客 2504

盘点Tomcat中常见的13种设计模式

单例模式全局维护单一对象,适合生命周期长(与应用生命周期相同)、全局访问的对象,避免创建/销毁开销,但为了全局唯一,创建对象时需要使用“同步”的机制;业务中全局共享、生命周期长的组件考虑设计为单例工厂模式根据入参构建对象,屏蔽内部实现细节,常用于构建/复用复杂对象;业务中根据不同参数创建/获取不同实现组件考虑使用工厂适配器模式将原本不兼容的接口转换为期望的接口,提高兼容性,但转换过程存在开销;业务中对两个不适配的组件兼容时考虑适配器。

jjc4261的博客 1212

tomcat中的外观模式的意义_Tomcat 设计模式分析

门面设计模式门面设计模式Tomcat 中有多处使用,在 Request 和 Response 对象封装中、Standard Wrapper 到 ServletConfig 封装中、ApplicationContext 到 ServletContext 封装中等都用到了这种设计模式。门面设计模式的原理这么多场合都用到了这种设计模式,那这种设计模式究竟能有什么作用呢?顾名思义,就是将一个东西封装成...

weixin_36169520的博客 162

走进JavaWeb技术世界7:Tomcat中的设计模式

门面设计模式 门面设计模式Tomcat 中有多处使用,在 Request 和 Response 对象封装中、Standard Wrapper 到 ServletConfig 封装中、ApplicationContext 到 ServletContext 封装中等都用到了这种设计模式。 门面设计模式的原理 这么多场合都用到了这种设计模式,那这种设计模式究竟能有什么作用呢?顾名思义,就是将一个东西...

mhHao的博客 152

tomcat中的设计模式

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33849942的博客 155

tomcat学习笔记之五:tomcat中的设计模式

待完成

yamikaze的博客 656

tomcat中的外观模式的意义_粗浅看 Tomcat设计模式分析

简介Tomcat 中运用的许多经典设计模式,如模版模式、工厂模式和单例模式等。通过学习它们的实践运用能给我们以后的程序设计起到一定的借鉴作用。外观外观设计模式Tomcat 中有多处使用,在 Request 和Response对象封装中、StandardWrapper到 ServletConfig封装中、ApplicationContext到 ServletContext封装中等都用到了这种设计...

weixin_39877166的博客 110

Tomcat中的设计模式--命令模式

命令设计模式       前面把 Tomcat 中两个核心组件 Connector 和 Container,比作一对夫妻。男的将接受过来的请求以命令的方式交给女主人。对应到 Connector 和 Container,Connector 也是通过命令模式调用 Container 的。 命令模式的原理       命令模式主要作用就是封装命令,把发出命令的责任和执行命令的责任分开。

Java面试辅导-海龟老师 1363

Tomcat中的设计模式--观察者模式

观察者设计模式          这种设计模式也是常用的设计方法通常也叫发布 - 订阅模式,也就是事件监听机制,通常在某个事件发生的前后会触发一些操作。 观察者模式的原理           观察者模式原理也很简单,就是你在做事的时候旁边总有一个人在盯着你,当你做的事情是它感兴趣的时候,它就会跟着做另外一些事情。但是盯着你的人必须要到你那去登记,不然你无法通知它。观察者模式通常包

Java面试辅导-海龟老师 1011

Tomcat中的设计模式--外观模式(门店模式)

门面设计模式 门面设计模式Tomcat 中有多处使用,在 Request 和 Response 对象封装中、Standard Wrapper 到 ServletConfig 封装中、ApplicationContext 到 ServletContext 封装中等都用到了这种设计模式。 门面设计模式的原理 这么多场合都用到了这种设计模式,那这种设计模式究竟能有什么作用呢?顾名思

Java面试辅导-海龟老师 1922

Tomcat中的设计模式

最近在看《深入剖析Tomcat》一书,同时,正在按照这本书内容开发一个自己的servlet容器。阅读过程中,发现的Tomcat设计模式有: 1.单例模式。 Tomcat的容器分为Wrapper,Conetxt,Host,Engine四种。其中,Wrapper对应每一个Servlet的容器,Context则对应于应用程序的容器。因此,每一个Wrapper只能与一个Servlet相关联。因此,W...

wqisen's workspace 262

关于IBM的Tomcat设计模式中的门面模式的某些错误1

关于IBM的Tomcat设计模式中的门面模式的某些错误1 在学习tomcat的代码中,参考了 许 令波2010年 发表在IBM的Tomcat 设计模式,他的第一版(Tomcat的工作原理)确实说得很精彩,我受益无穷,非常感谢。作为一个思维严谨的设计人员,也有点难理解,因此我特意去看代码帮助理解,翻查了Tomcat 5.0 trunk版本到Tomcat 9.0.8 的版本,然后我就发现了他的...

robin的专栏 370
上一篇: 使用嵌入式jetty在Eclipse中部署struts2示例程序struts2-blank
下一篇: oracle轻量级客户端链接plsql
yangkunlin
博客等级 码龄17年 1粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值