Tomcat模板方法模式怎么实现
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,本篇内容介绍了"Tomcat模板方法模式怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说到模
千家信息网最后更新 2025年01月24日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安全错误
数据库的锁怎样保障安全
64位系统数据库连接错误
服务器生存第五期视频
软件开发项目经验英文介绍
淄川进销存管理软件开发
数据库作业如何建
法国软件开发能力
仰良军软件开发
计算机软件开发与应用研究
服务器安全狗太卡
空间模型软件开发
网络安全应急标准体系研究
施工单位软件开发
java 数据库线程池
视频服务器百兆带宽
数据库映射visio图
查看数据库审计策略
免费云服务器体验
网络安全课题申报
服务器硬盘故障有哪些
我国主导的5G网络技术编码
wechat数据库
ftp的密码在服务器哪里改
视易批量入库程序怎么连接服务器
政府软件开发公司吗
网络技术发展的参考文献
广安软件开发报价
网络技术专科学什么工作好
web服务器加固
华为服务器故障处理24
arcgis地籍数据库建立流程