Tomcat中设计模式-门面模式
开篇
门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用,如下图所示(一图胜千言)。
Tomcat中门面模式的例子
说明:
- RequestFacade作为Request的门面,内部包含Request对象。
说明:
- ResponseFacade作为Response的门面,内部包含Response对象。
说明:
- StandardSessionFacade作为HttpSession的门面,内部包含HttpSession对象。
说明:
- ApplicationContextFacade作为ApplicationContext的门面,内部包含ApplicaitonContext对象。
例子源码
说明:
- RequestFacade内部包含Request对象。
- 对于Request对象的访问通过RequestFacade进行访问。
public class RequestFacade implements HttpServletRequest {public RequestFacade(Request request) {this.request = request;}protected Request request = null;public Object getAttribute(String name) {if (request == null) {throw new IllegalStateException(sm.getString("requestFacade.nullRequest"));}return request.getAttribute(name);}public Enumeration<String> getAttributeNames() {if (request == null) {throw new IllegalStateException(sm.getString("requestFacade.nullRequest"));}if (Globals.IS_SECURITY_ENABLED){return AccessController.doPrivileged(new GetAttributePrivilegedAction());} else {return request.getAttributeNames();}}public int getContentLength() {if (request == null) {throw new IllegalStateException(sm.getString("requestFacade.nullRequest"));}return request.getContentLength();}
}public class Request implements org.apache.catalina.servlet4preview.http.HttpServletRequest {private HttpServletRequest applicationRequest = null;protected RequestFacade facade = null;public HttpServletRequest getRequest() {if (facade == null) {facade = new RequestFacade(this);}if (applicationRequest == null) {applicationRequest = facade;}return applicationRequest;}
}
参考文章
Tomcat 设计模式总结(Tomcat源代码阅读系列之八)
Tomcat中设计模式-门面模式相关推荐
- 外观模式 门面模式 Facade 结构型 设计模式(十三)
外观模式(FACADE) 又称为门面模式 意图 为子系统中的一组接口提供一个一致的界面 Facade模式定义了一个高层接口,这一接口使得这一子系统更加易于使用. 意图解析 随着项目的持续发展,系统基本 ...
- 设计模式-外观模式(门面模式)
外观模式(门面模式) 外观模式介绍 定义 通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式. 该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大 ...
- 混合模式(工厂方法模式+策略模式+门面模式)
混合模式(工厂方法模式+策略模式+门面模式) 使用这三种模式设计一个简单的计算器程序:计算器是用于计算数值之间进行数学计算后所获得的值.它包含基本的"加减"功能.以上对以上需求进行 ...
- facade外观模式/门面模式(通过积分商城的例子理解外观模式)-设计模式
目录 1.概述与图解 2.积分商城兑换礼品的例子 1.概述与图解 facade,外观模式,又叫门面模式.要解决的问题情境是,当一个客户端,需要调用多个子系统或者多个逻辑处理类,进而才能完成一个目标或功 ...
- .net 有哪些主流的设计模式_「设计模式自习室」门面模式 Facade Pattern
前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该模式的介绍,包括: 引子.意图(大白话解释) 类图.时序图(理论规范) 该模式的代码示例:熟悉该模 ...
- 8、Python与设计模式--门面模式
一.火警报警器(1) 假设有一组火警报警系统,由三个子元件构成:一个警报器,一个喷水器,一个自动拨打电话的装置.其抽象如下: class AlarmSensor:def run(self):print ...
- 组合模式 桥接模式 java_java设计模式5.组合模式、门面模式、享元模式、桥接模式...
组合模式 在面向对象的语言中,树结构有着巨大的威力,一个基于继承的类型的等级结构便是一个数结构,一个基于合成的对象结构也是一个数结构.组合模式将部分与整体的关系用树结构表示出来,使得客户端把一个个单独 ...
- 设计模式之禅【门面模式】
真刀实枪之门面模式 从投递信件说起 写过纸质信件没,如果你是00后,那机会应该很少,不过没关系,先来看看步骤 写信的内容 写信封 把信放到信封 投递到信箱中进行邮递 看下该过程的类图 趁热打铁,代码跟 ...
- 设计模式之门面模式详解
设计模式之门面模式详解 文章目录 设计模式之门面模式详解 一.什么是门面模式 二.门面模式的应用场景 三.门面模式的角色组成 四.门面模式通用写法 五.门面模式在业务中的应用 六.门面模式优缺点 一. ...
- 重学设计模式——你听说过门面模式吗?
前言 在一文了解MVI架构,学起来吧~这篇文章的最后,我们提到了对网域层的理解类似于门面模式,所以这里单独写一篇文章介绍一下门面模式. 再前言 面试的时候,面试官都会问用过什么设计模式,99%程序员的 ...
最新文章
- 一、nginx 安装
- WIN7系统激活后无法正常启动
- 如何查看某个employee被assign到了哪个sales organization上
- UVA----10082 WERTYU【字符串】
- xml 纯内容标签_Python小课堂XML 解析
- matlab画图小记tickdir\YTick\YTick
- 关于企业级系统一些思考
- 整理了5个JavaScript怪异行为及其原因
- 小企业环境中磁带备份和恢复的利与弊
- 关于如何提高代码执行效率。
- 早期预警系统的组成要素
- python坐标转化极坐标_matplotlib极坐标方法详解
- 计算机原理(3)主板上的CPU,存储器,南桥北桥等的总结
- 大道至简:大数据、小数据、量化交易
- git如何撤销某次提交记录
- springboot基于java的基金分析系统的设计与实现
- oracle:sql 判断时间段重叠
- python抢鞋nike,snkrs怎么抢鞋 nike snkrs抢鞋步骤
- 微信小程序——小程序中计算属性的使用
- openpyxl对excel,.xlsx格式的文件进行操作