Tomcat模板方法模式怎么实现

本篇内容介绍了“Tomcat模板方法模式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

10多年的鲁山网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整鲁山建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“鲁山网站设计”,“鲁山网站推广”以来,每个客户项目都认真落实执行。

说到模板方法模式,会在Tomcat以及许多面向对象的代码中,大量使用到。

这个名称已经比较形象了。

就像责任链的核心是Chain对象的传递一样,这个模式的核心是模板方法

所谓模板,就是提供了一种默认的样式。像成语描述“一模一样”,这里的模,是指模子,通过这个来做出多个一样的产品,而我们代码里的模板方法也是提供一种默认的执行逻辑,但是,至于逻辑中使用到的方法的细节,可以提供给子类来详细实现。

例如,下面的代码,是Tomcat中在创建请求处理器的时候的方式:

protected abstract P createProcessor();
 

 
protected abstract void initSsl(SocketWrapper socket,
       Processor processor);
 

 
public SocketState process(SocketWrapper wrapper,
       SocketStatus status) {
   Processor processor = connections.get(socket);
   if (status == SocketStatus.DISCONNECT && processor == null) {
       // Nothing to do. Endpoint requested a close and there is no
       // longer a processor associated with this socket.
       return SocketState.CLOSED;
   }

   try {
       if (processor == null) {
           processor = recycledProcessors.pop();
       }
       if (processor == null) {
           processor = createProcessor();
       }
 
initSsl(wrapper, processor);

我们看到,整个process方法是完整的处理逻辑,但在这个方法内部,会在判断processor为空的时候创建Processor,如果使用了ssl,也会初始化之。而重点就在这里,此处的createProcessor方法和initSsl方法都声明为abstract,留给子类实现。

由于Tomcat提供多种类型的Connector进行请求处理,例如有阻塞方式的,非阻塞方式的,支持AJP协议的等等,使用模板方法模式,很好的满足了多种Connector的不同创建逻辑。

例如下面的代码,分别是HttpNio和Ajp这两种Connector的Processor创建:

public Http11NioProcessor createProcessor() {
   Http11NioProcessor processor = new Http11NioProcessor(...);
   proto.configureProcessor(processor);
   register(processor);
   return processor;
}
 
protected AjpProcessor createProcessor() {
 
AjpProcessor processor = new AjpProcessor(...);
   proto.configureProcessor(processor);
   register(processor);
   return processor;
}

initSsl方法也是如此。

在Tomcat的源码中,还包含大量使用该模式的地方,阅读时,你不经意间就会发现它的存在。

“Tomcat模板方法模式怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


当前题目:Tomcat模板方法模式怎么实现
新闻来源:http://bzwzjz.com/article/peesjh.html