Tomcat中的设计模式

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的数组,同时利用一个同步锁来确保每次只有一个线程在操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值