Tomcat模板方法模式怎么实现
发表于:2024-10-25 作者:千家信息网编辑
千家信息网最后更新 2024年10月25日,本篇内容介绍了"Tomcat模板方法模式怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说到模
千家信息网最后更新 2024年10月25日Tomcat模板方法模式怎么实现
本篇内容介绍了"Tomcat模板方法模式怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
说到模板方法模式,会在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模板方法模式怎么实现"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
方法
模板
模式
代码
逻辑
方式
处理
内容
多种
子类
对象
时候
更多
核心
知识
面的
阻塞
不同
不经意
实用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络开发和软件开发区别
apache无法连接服务器
计算机网络安全背景概述
微软速软件开发
sql数据库报错706
西宁软件开发培训
access数据库报告
临汾触摸翻书软件开发公司
都有哪些数据库mssql
网络安全ppt总结
长沙浏阳网络安全
晋城中心组 网络安全学习
微沸网络技术应用
网格绘制软件开发
直播流媒体网络技术
联想服务器默认的带外地址
在数据库中新增一个库
使用旅店网络安全不
进入国家中小学生网络安全
如何看服务器是否脱域
数据库一键备份系统
国防科技大学引入互联网
工控网安全和传统网络安全的区别
济南物流软件开发价格
网络安全教育主题活动策划书
数据库上机考试题
彩6的服务器在哪
鼎诚网络安全科技馆
学生强化网络安全
数据库系统的核心是数据的真实性