[url]http://www.cnblogs.com/wzh206/archive/2010/03/21/1691112.html[/url]

Facade模式

  Facade模式要求一个子系统的外部与其内部的通信必须通过一个统一的Facade对象进行。Facade模式提供一个高层次的接口,使得子系统更易于使用。

  就如同医院的接待员一样,Facade模式的Facade类将客户端与子系统的内部复杂性分隔开,使得客户端只需要与Facade对象打交道,而不需要与子系统内部的很多对象打交道。

观察者模式的结构

[img]http://images.cnblogs.com/cnblogs_com/maobisheng/DesignPatterns_Creational/10.Facade.jpg[/img]

Facade的几个要点

  从客户程序的角度来看,Facade模式不仅简化了整个组件系统的接口,同时对于组件内部与外部客户程序来说,从某种程度上也达到了一种“解耦”的效果——内部子系统的任何变化不会影响到Façade接口的变化。

  Façade设计模式更注重从架构的层次去看整个系统,而不是单个类的层次。Façade很多时候更是一种架构设计模式。

  Façade设计模式并非一个集装箱,可以任意地放进任何多个对象。Façade模式中组件的内部应该是“相互耦合关系比较大的一系列组件”,而不是一个简单的功能集合。

  注意区分Façade模式、Adapter模式、Bridge模式与Decorator模式。Façade模式注重简化接口,Adapter模式注重转换接口,Bridge模式注重分离接口(抽象)与其实现,Decorator模式注重稳定接口的前提下为对象扩展功能。

适用性

  1.为一个复杂子系统提供一个简单接口。

  2.提高子系统的独立性。

  3.在层次化结构中,可以使用Facade模式定义系统中每一层的入口。

Facade模式的模型

  A系统有A1, A2, A3等类。客户端需要调用A系统的的A1.doSomething1();A2.doSomething2();A3.doSomething3()来完成某功能。
Facade模式的实现模型就是:

A系统:

class A1 {
public void doSomething1();
}

class A2 {
public void doSomething2();
}

class A3 {
public void doSomething3();
}

Facade:
public class Facade {
public void doSomething() {
A1 a1 = new A1();
A1 a2 = new A2();
A1 a3 = new A3();

a1.doSomething1();
a2.doSomething2();
a3.doSomething3();
}
}

Test:
public class Client {
public static void main(String []args) {
Facade facade = new Facade();
facade.doSomething();
}
}

设计模式 -- Facade相关推荐

  1. 门面设计模式(Facade Pattern)

    GOF设计模式 Facade Pattern 门面设计模式 门面模式例子:我有一个专业的Nikon相机,我就喜欢自己手动调光圈.快门,这样照出来的照片才专业,但MM可不懂这些,教了半天也不会.幸好相机 ...

  2. 重学设计模式 - Facade模式

    1.     Facade模式简介 Façade在建筑领域的意思是:(掩饰真相的)门面,也就意味着,如果你想探究更细节的真相就需要经过Façade. <设计模式>一书中对Façade模式的 ...

  3. php5.1 facade,php设计模式 Facade(外观模式)

    模式定义:外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加 ...

  4. C++设计模式-Facade模式

    Facade模式 作用:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 动机 将一个系统划分成为若干个子系统有利于降低系统的复杂性.一 ...

  5. [php]php设计模式 Facade(外观模式)

    1 <?php 2 /** 3 * 外观模式 示例 4 * 5 * 为子系统中的一组接口提供一个一致的界面,定义一个高层接口,使得这一子系统更加的容易使用 6 */ 7 class SubSyt ...

  6. 设计模式——Facade

    一.模式定义 门面模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统 ...

  7. 设计模式-Facade模式

    门面(Facade)模式的理解与应用 概念 门面模式,指子系统的外部与其内部的通信必需通过一个统一的门面(Facade)对象进行,示意图如下: 应用场景 为一个复杂子系统提供一个简单接口 子系统常常因 ...

  8. GOF 设计模式Facade模式 笔记

    Facade(外观) 意图:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 结构图 在以下情况使用: 当你要为一个复杂子系统提供一个简 ...

  9. 设计模式-Facade门面-Mediator调停者

    门面模式(对外) 一站式解决方案 一个客户想要去办一件事,结果呢,到了公司之后,要先到财务部,财务部说你需要人事部的申请单,客户去了人事部,人事部说你需要运营部签字,客户又跑去运营部签字-跑来一圈之后 ...

  10. 设计模式--门面(Facade)模式

    模式定义 为子系统中的一组接口提供一个一致(稳定)的界面,Facade模式定义了一个高层接口,这个接口使得这个子系统更加容易使用(复用) 类图 应用场景 1.当你需要使用复杂子系统的有限但直接的接口时 ...

最新文章

  1. usaco Overfencing 穿越栅栏(BFS)
  2. 大战设计模式【16】—— 桥接模式
  3. 深圳SEO外包公司×××,如何选择合适的SEO外包公司?
  4. 使用Java程序通过http post访问Application server
  5. 大型运输行业实战_day12_1_权限管理实现
  6. 设计模式学习笔记五——Prototype模式
  7. HDU2027 统计元音【入门】
  8. 【RPA】PDF生成器FPDF(Python篇)
  9. 调用栈(call stack)
  10. 2018通达信l2服务器源码,很后悔购买了通达信L2看盘软件,大家不要再买进这个软件了...
  11. Linux文件目录操作命令 rm
  12. python 抢票_Python3.x:抢票
  13. 人工智能项目的伦理审查
  14. 用计算机弹出微微,电脑显示器轻微闪烁怎么办
  15. 如何一次性查询千百个顺丰快递的详细物流信息
  16. 蚂蚁金服 Java开发专家 一面在线编程题
  17. C++学习路线必读4本书
  18. hosts屏蔽网站以及代理越过屏蔽
  19. 敏捷实践不可忽略的环节
  20. AKAZE/KAZE局部特征

热门文章

  1. MessAPI V1.1.1 QQ音乐、网易云音乐、酷狗音乐、咪咕音乐、酷我音乐、百度音乐API接口
  2. java adt下载_Android ADT 离线下载操作步骤
  3. reflections歌词翻译_Reflections中文歌词
  4. 手把手教会你 | 多用户-服务器聊天室应用软件开发
  5. 弹簧优化设计MATLAB,基于Matlab的圆柱螺旋弹簧可靠性优化设计
  6. 证件照换底,红白蓝底随机换(附:一寸二寸证件照制作)
  7. 太阳光是平行光吗_百思 | 太阳光是不是平行光?
  8. 索尼pha2 android手机,索尼PHA-2A便携式耳机放大器图文评测
  9. WPF系列教程(十九):日期控件——Calendar、DatePicker日历控件
  10. 手机抓包 fiddler 配置