设计模式 之 Facade

转载 2013年12月05日 10:23:47

设计模式 -- Facade

Facade模式

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

 

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

 

观察者模式的结构

 

  

 

 

 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设计模式

  • 2014年03月18日 23:51
  • 669KB
  • 下载

facade设计模式

  • 2012年03月07日 14:48
  • 836KB
  • 下载

设计模式之Facade,Adapter, Proxy

Facade,Adapter,Proxy模式有点类似,功能上都是对调用者提供调用接口,但他们的目的就有些不同。最近正在做一个域名系统,其中就用到了Facade和Adapter模式。正好结合项目来分析下...

设计模式1,FACADE模式,Adapter

  • 2011年05月10日 14:38
  • 1.54MB
  • 下载

设计模式之外观模式 facade

  • 2012年06月13日 17:41
  • 10KB
  • 下载

【门面设计模式】的故事来源(Facade Pattern)

门面模式:门面模式(亦称外观模式Facade Pattern),外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。每一个子系统只有一个门面类,而...
  • dotedy
  • dotedy
  • 2016年01月04日 14:21
  • 158

设计模式笔记(6 FACADE)

设计模式笔记(6 FACADE) 分类: C/C++ 笔记 设计模式 2006-03-28 11:46 1397人阅读 评论(0) 收藏 举报 FACADE(外观) ...
  • ilvu999
  • ilvu999
  • 2012年10月18日 09:42
  • 345
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式 之 Facade
举报原因:
原因补充:

(最多只允许输入30个字)