文档章节

结构型模式之五:门面模式

奋斗到天明
 奋斗到天明
发布于 2015/08/27 16:44
字数 240
阅读 39
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

门面模式隐藏了一个任务的复杂性,提供吧一个简单的接口,一个很好的例子是电脑的启动,当一个电脑启动,他涉及CPU,内存,硬盘等等,为了使他对用户简单,我们添加一个门面来包裹这个任务的复杂性,并提供一个简单的接口代替。

1、门面模式的类图

2、Java门面模式的例子

//the components of a computer
class CPU {
  public void processData() { }
}
 
class Memory {
  public void load() { }
}
 
class HardDrive {
  public void readdata() { }
}
 
/* Facade */
class Computer {
  private CPU cpu;
  private Memory memory;
  private HardDrive hardDrive;
 
  public Computer() {
    this.cpu = new CPU();
    this.memory = new Memory();
    this.hardDrive = new HardDrive();
  }
 
  public void run() {
    cpu.processData();
    memory.load();
    hardDrive.readdata();
  }
}
 
 
class User {
  public static void main(String[] args) {
    Computer computer = new Computer();
    computer.run();
  }
}

3、实际项目中的例子

在javax.faces.context中,ExternalContext内部使用ServletContext, HttpSession, HttpServletRequest, HttpServletResponse等等,他允许接口api自然地访问他们包含的应用变量。 

以上文章翻译自: http://www.programcreek.com/2013/02/java-design-pattern-facade/

奋斗到天明
粉丝 19
博文 112
码字总数 82707
作品 0
昌平
程序员
私信 提问
加载中
请先登录后再评论。
Swift百万线程攻破单例(Singleton)模式

一、不安全的单例实现 在上一篇文章我们给出了单例的设计模式,直接给出了线程安全的实现方法。单例的实现有多种方法,如下面: class SwiftSingleton { } 这段代码的实现,在shared中进行条...

一叶博客
2014/06/20
3.3K
16
REST/HTTP 工具包--Spray

Spray 是一个开源的 REST/HTTP 工具包和底层网络 IO 包,基于 Scala 和 Akka 构建。轻量级、异步、非堵塞、基于 actor 模式、模块化和可测试是 spray 的特点。 示例代码: val responses: F...

匿名
2013/02/20
7K
0
Swing界面分析和调试工具--Swing Inspector

Swing Inspector是一个Java Swing/AWT用户界面分析和调试工具,功能与firebug类似,具有强大的Swing/AWT用户界面分析和调试相关功能。 适用于从java swing初级到高级的所有开发人员,能够快速...

匿名
2013/03/06
3.3K
0
C++的JSON解析类--JSONVALUE

Jsonvalue 是 C++ 的 JSON 类,用来解析 JSON 到 C++ 对象,也可将对象转成 JSON 字符串。支持 ANSI 和 Unicode。特点: 严格和松散模式 不同数据类型 简单 API 仅依赖 STL 示例代码: JSON...

匿名
2013/03/10
2.9K
1
开源数据访问组件--Smark.Data

Smark.Data是基于Ado.net实现的数据访问组件,提供基于强类型的查询表达式进行灵活的数据查询,统计,修改和删除等操作;采用基于条件驱动的操作模式,使数据操作更简单轻松;内部通过标准SQL...

泥水佬
2013/03/12
2.5K
0

没有更多内容

加载失败,请刷新页面

加载更多

R_3D图(二)

作者:李誉辉 四川大学在读研究生 前言 这篇是用R绘制3D图系列之二,前一篇请戳:R_3D图(一),后面的章节会出3D柱形图,函数绘图,三维散点图等。敬请期待,做教程狠费精力的,别忘了点赞和转...

YGH1215
2018/12/06
4
0
图解Linux是如何进行函数调用的?

先抛出几个问题: 进程虚拟地址空间是如何分布的? 函数调用的栈帧结构是什么样子? 函数调用涉及到的寄存器都起了什么作用? 函数参数是如何传递的?传递顺序如何? 函数的返回值是如何传递...

学以解忧
07/01
15
0
109 创建货源清单记录

点击上方蓝字【SAP USER HOME】快速关注 特别提示:1. 每个企业的生产系统不能进行操作练习,此演示全部为测试系统数据,若需要练习可以联系各自企业的信息部或者IT协调。2. 由于各企业系统设...

安寜
2019/09/09
0
0
MySQL8-安装

步骤: 官网下载 MySQL8 免安装软件包。 将下载好的软件解压到指定的路径。 在MySQL文件夹根目录创建文件my.ini,将以下内容复制到文件,按需修改地址。 #数据库服务端配置项[mysqld]#数据...

ZRYACOOL
24分钟前
10
0
SpringFramework之ViewResolver优化

Springboot版本是2.x Springboot中,对mvc进行自动化配置时在WebMvcAutoConfiguration中会自动注入InternalResourceViewResolver(渲染jsp的)、BeanNameViewResolver、ContentNegotiatingVie......

克虏伯
24分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部