开篇

 门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用,如下图所示(一图胜千言)。

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中设计模式-门面模式相关推荐

  1. 外观模式 门面模式 Facade 结构型 设计模式(十三)

    外观模式(FACADE) 又称为门面模式 意图 为子系统中的一组接口提供一个一致的界面 Facade模式定义了一个高层接口,这一接口使得这一子系统更加易于使用. 意图解析 随着项目的持续发展,系统基本 ...

  2. 设计模式-外观模式(门面模式)

    外观模式(门面模式) 外观模式介绍 定义 通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式. 该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大 ...

  3. 混合模式(工厂方法模式+策略模式+门面模式)

    混合模式(工厂方法模式+策略模式+门面模式) 使用这三种模式设计一个简单的计算器程序:计算器是用于计算数值之间进行数学计算后所获得的值.它包含基本的"加减"功能.以上对以上需求进行 ...

  4. facade外观模式/门面模式(通过积分商城的例子理解外观模式)-设计模式

    目录 1.概述与图解 2.积分商城兑换礼品的例子 1.概述与图解 facade,外观模式,又叫门面模式.要解决的问题情境是,当一个客户端,需要调用多个子系统或者多个逻辑处理类,进而才能完成一个目标或功 ...

  5. .net 有哪些主流的设计模式_「设计模式自习室」门面模式 Facade Pattern

    前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该模式的介绍,包括: 引子.意图(大白话解释) 类图.时序图(理论规范) 该模式的代码示例:熟悉该模 ...

  6. 8、Python与设计模式--门面模式

    一.火警报警器(1) 假设有一组火警报警系统,由三个子元件构成:一个警报器,一个喷水器,一个自动拨打电话的装置.其抽象如下: class AlarmSensor:def run(self):print ...

  7. 组合模式 桥接模式 java_java设计模式5.组合模式、门面模式、享元模式、桥接模式...

    组合模式 在面向对象的语言中,树结构有着巨大的威力,一个基于继承的类型的等级结构便是一个数结构,一个基于合成的对象结构也是一个数结构.组合模式将部分与整体的关系用树结构表示出来,使得客户端把一个个单独 ...

  8. 设计模式之禅【门面模式】

    真刀实枪之门面模式 从投递信件说起 写过纸质信件没,如果你是00后,那机会应该很少,不过没关系,先来看看步骤 写信的内容 写信封 把信放到信封 投递到信箱中进行邮递 看下该过程的类图 趁热打铁,代码跟 ...

  9. 设计模式之门面模式详解

    设计模式之门面模式详解 文章目录 设计模式之门面模式详解 一.什么是门面模式 二.门面模式的应用场景 三.门面模式的角色组成 四.门面模式通用写法 五.门面模式在业务中的应用 六.门面模式优缺点 一. ...

  10. 重学设计模式——你听说过门面模式吗?

    前言 在一文了解MVI架构,学起来吧~这篇文章的最后,我们提到了对网域层的理解类似于门面模式,所以这里单独写一篇文章介绍一下门面模式. 再前言 面试的时候,面试官都会问用过什么设计模式,99%程序员的 ...

最新文章

  1. 一、nginx 安装
  2. WIN7系统激活后无法正常启动
  3. 如何查看某个employee被assign到了哪个sales organization上
  4. UVA----10082 WERTYU【字符串】
  5. xml 纯内容标签_Python小课堂XML 解析
  6. matlab画图小记tickdir\YTick\YTick
  7. 关于企业级系统一些思考
  8. 整理了5个JavaScript怪异行为及其原因
  9. 小企业环境中磁带备份和恢复的利与弊
  10. 关于如何提高代码执行效率。
  11. 早期预警系统的组成要素
  12. python坐标转化极坐标_matplotlib极坐标方法详解
  13. 计算机原理(3)主板上的CPU,存储器,南桥北桥等的总结
  14. 大道至简:大数据、小数据、量化交易
  15. git如何撤销某次提交记录
  16. springboot基于java的基金分析系统的设计与实现
  17. oracle:sql 判断时间段重叠
  18. python抢鞋nike,snkrs怎么抢鞋 nike snkrs抢鞋步骤
  19. 微信小程序——小程序中计算属性的使用
  20. openpyxl对excel,.xlsx格式的文件进行操作

热门文章

  1. uni-app 引入本地iconfont的正确姿势以及阿里图标引入
  2. Python星号表达式
  3. namenode 无法启动之每次开机需要重新格式化-tmp
  4. 一个事务复制的bug--更新丢失 续
  5. http://www.duilib.cc
  6. Archlinux下启用Thinkpad功能键
  7. Java面试问题 021-030
  8. 01_Navicat的快捷键学习
  9. logging日志模块 , 序列化json pickle , 随机数random
  10. tpc的time-wait