Tomcat之设计模式
Tomcat框架中设计到的设计模式包括:模板模式、工厂模式、单例模式、门面模式、观察者模式、责任链模式、命令模式等,下面分别对这些设计模式做一些简单的解释。
1、门面模式:该模式一般用在一个大的系统中有多个子系统,子系统之间进行相互通信,每个子系统又不能将各自内部的数据都暴露给对方,所以每个子系统都设计一个门面,将别的系统感兴趣的数据封装起来,通过这个门面来访问。Request和Respoonse对象的封装、从StandardWrapper到ServletConfig封装、从ApplicationContext到ServletContext封装都用到该模式。
2、观察者模式:原理是你做事的时候傍边有人盯着,当你做的事情是他感兴趣的时候,他就回跟着做别的事情,但是盯着你的人必须到你那里登记,不然你无法通知他,观察者模式一般包括几个角色,抽象主题、具体主题、观察者。例如:Servlet实例的创建、Session的管理、Container、生命周期等
3、责任链模式:例如:tomcat得人容器设置就是该模式,从Engine到Host再到Context都通过一个连传递请求。
4、命令模式:主要作用就是封装命令,将命令的发出者和命令的执行者分开,也是一种功能的分工,不同的模板可以对同一命令做出不同的解释。通常包括几个角色:创建一个命令(Client)、命令接口(Command)、具体命令、请求者、接受者。例如:Connector和 Container组件之间
5、代理模式:给某个对象创建一个代理对象,由这个代理对象控制对元对象的引用,而创建这个代理对象后可以在调用原对象时增加一些额外的操作,包括单个部分:Subject:抽象主题,即代理对象的真实对象要实现的接口,可以由对个接口组成;ProxySubject:代理类,即除了实现抽象主题定义的接口为,还必须持有代理对象的引用;RealSubject:被代理的类,是目标对象。
6、策略模式:做某事的策略:指完成某个操作可能有多种方法,这些方法可能有不同的适合的场合,这些方法都可能呗用到,各个方法都当做一个实现策略,使用者根据需要选择合适的策略。感觉就是接口实现类。例如:bean定义对象的创建及代理对象的创建等
- ASP.NET MVC Action Filters
- Android:StatFs类 获取系统/sdcard存储空间信息
- 数据挖掘干货
- 高效 Mac 人士必备:实现工作/家庭间网络环境切换的自动化
- android中AVD的使用
- ASP.NET MVC 2示例Tailspin Travel UI层分析
- CSS 命名之Dialog, Modal, Popup, Popover, Lightbox 等的区别
- Eclipse JAVA文件注释乱码
- 2018年小程序的红利趋势预测,懂的来……或许你将成为下个富翁
- VUE 入门基础(6)
- 五年换4高管,6000员工裁95%剩300人,王健林为何抛弃万达网科?
- Android Permission中英对照
- 你知道人脸识别技术是如何实现的吗?
- WordPress REST API 定制化输出
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 聊聊dubbo-go的kubernetesRegistry
- QMake复制文件/目录方法
- 计算FPS小例子
- 解读技术 |学习率及其如何改善深度学习算法
- MySQL 5.7 新特性:Generated Column
- 聊聊dubbo-go的nacosRegistry
- 聊聊dubbo-go的PrometheusReporter
- 聊聊dubbo-go的apolloConfiguration
- 聊聊dubbo-go的DefaultHealthChecker
- 一文搞懂matplotlib中的颜色设置
- pyecharts极简入门教程
- Linux gdb+valgrind调试
- matplotlib基础绘图命令之hist
- Python|一文详解数据预处理
- 安排上了!PC人脸识别登录,出乎意料的简单