大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容介绍了“Tomcat模板方法模式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
10多年的鲁山网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整鲁山建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“鲁山网站设计”,“鲁山网站推广”以来,每个客户项目都认真落实执行。
说到模板方法模式,会在Tomcat以及许多面向对象的代码中,大量使用到。
这个名称已经比较形象了。
就像责任链的核心是Chain对象的传递一样,这个模式的核心是模板方法。
所谓模板,就是提供了一种默认的样式。像成语描述“一模一样”,这里的模,是指模子,通过这个来做出多个一样的产品,而我们代码里的模板方法也是提供一种默认的执行逻辑,但是,至于逻辑中使用到的方法的细节,可以提供给子类来详细实现。
例如,下面的代码,是Tomcat中在创建请求处理器的时候的方式:
protected abstract P createProcessor();protected abstract void initSsl(SocketWrapper
socket,
Processorprocessor);public SocketState process(SocketWrapper
wrapper,
SocketStatus status) {
Processorprocessor = 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模板方法模式怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!