`
lvwenwen
  • 浏览: 963610 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

Facade门面模式

阅读更多


文章链接:http://yintech.iteye.com/blog/440748
Facade外观模式(门面模式):
为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。
Facade模式是为了降低子系统之间,客户端与实现化层之间的依赖性。当在构建一个层次化的系统时,也可以同过使用Facade模式定义系统中每一层的入口,从而简化层与层之间的依赖关系。
例子:

1.DrawerOne.java
Java代码 
public class DrawerOne { 
 
    public void open() { 
        System.out.println("第一个抽屉被打开了"); 
        getKey(); 
    } 
 
    public void getKey() { 
        System.out.println("得到第二个抽屉的钥匙"); 
    } 


2.DrawerTwo.java

Java代码 
public class DrawerTwo { 
 
        public void open() { 
 
               System.out.println("第二个抽屉被打开了"); 
 
               getFile(); 
 
        } 
 
        public void getFile() { 
 
               System.out.println("得到这个重要文件"); 
 
        } 
 



则通常为了拿到“重要文件”需要如下代码实现:

Java代码 
public class Client { 
 
        public static void main(String[] args) { 
 
               DrawerOne darwerOne = new DrawerOne(); 
 
               DrawerTwo darwerTwo = new DrawerTwo(); 
 
               darwerOne.open(); 
 
               darwerTwo.open(); 
 
        } 
 


但是如果使用Facade外观模式,可新建一个Facade类:

Java代码 
public class DrawerFacade { 
 
    DrawerOne darwerOne=new DrawerOne(); 
 
    DrawerTwo darwerTwo=new DrawerTwo(); 
 
    public void open(){ 
 
       darwerOne.open(); 
 
       darwerTwo.open(); 
 
    } 
 



则此时调用的代码修改为:

Java代码 
public class Client { 
 
        public static void main(String[] args) { 
 
            DrawerFacade drawer=new DrawerFacade(); 
 
            drawer.open(); 
        } 



门面模式的典型应用:在业务层。门面模式的核心,是提供一站式服务,内部的各种复杂交互,对使用者不可见。

 Facade模式应用
  在遇到以下情况经常使用Facade模式:
  1、当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。
  Facade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过Facade层。
  2、客户程序与抽象类的实现部分之间存在着很大的依赖性。引入Facade将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。
  3、当你需要构建一个层次结构的子系统时,使用Facade模式定义子系统中每层的入口点,如果子系统之间是相互依赖的,你可以让它们仅通过Facade进行通讯,从而简化了它们之间的依赖关系。

 Facade模式有下面一些优点:
  1、它对客户屏蔽子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便。
  2、它实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件往往是紧耦合的。
  松耦合关系使得子系统的组件变化不会影响到它的客户。Facade模式有助于建立层次结构系统,也有助于对对象之间的依赖关系分层。Facade模式可以消除复杂的循环依赖关系。这一点在客户程序与子系统是分别实现的时候尤为重要。
  在大型软件系统中降低编译依赖性至关重要。在子系统类改变时,希望尽量减少重编译工作以节省时间。用Facade可以降低编译依赖性,限制重要系统中较小的变化所需的重编译工作。Facade模式同样也有利于简化系统在不同平台之间的移植过程,因为编译一个子系统一般不需要编译所有其他的子系统。
  3、如果应用需要,它并不限制它们使用子系统类。因此你可以在系统易用性和通用性之间加以选择。



参考文章:http://www.blogjava.net/flustar/archive/2007/11/23/facade.html
               http://baike.baidu.com/view/1151448.html

 

分享到:
评论

相关推荐

    facade门面模式

    门面模式(Facade Pattern)是一种结构型设计模式,它的主要目的是为复杂的子系统提供一个统一且简单的接口,使得客户端能够更方便地与这些子系统交互,而无需了解子系统的内部实现细节。这种模式降低了客户端与子...

    设计模式之门面模式(Facade模式)

    设计模式之门面模式(Facade模式),介绍门面模式,实际例子分析,代码讲解等

    C++设计模式课件14_Facade_门面模式.pdf

    ### C++设计模式之门面模式(Facade Pattern) #### 一、门面模式概述 在软件工程领域,设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易...

    设计模式C++学习之门面模式(Facade)

    门面模式(Facade)是设计模式中的一种结构型模式,它的主要目的是为了解决复杂的系统接口问题,提供一个简单的统一接口,使得客户端可以更方便地使用系统。在C++编程中,门面模式的应用尤为常见,它能有效地降低...

    迪米特法则---门面Facade模式.docx

    在实际开发中,门面模式常用于构建多层架构的应用程序,如UI层、Business Facade层、Business Rule层和Data Access层。Business Facade层作为业务外观,负责接收用户请求,处理数据访问,并将响应返回给用户层。通过...

    设计模式 之 “门面模式[Facade Pattern]”

    门面模式(Facade Pattern)是软件工程中一种常用的结构型设计模式,它的主要目的是提供一个统一的接口,用来简化系统中一组复杂的接口或类的使用。这个模式将复杂的子系统接口封装在一个简单的门面对象中,使得...

    结构型模式之门面模式(Facade)

    门面模式(Facade)是软件设计模式中的一种结构型模式,它的主要目的是为了解耦复杂的系统,通过提供一个简单的统一接口来屏蔽子系统的复杂性,使得客户端与子系统的交互变得更加简单和直观。在大型软件系统中,往往...

    第8讲_门面模式(Facade)

    门面模式(Facade Pattern)是一种设计模式,它在软件工程中扮演着简化复杂系统接口的角色。当一个系统或子系统包含大量类,并且客户端需要与这些类进行交互时,门面模式可以提供一个高层次的单一接口,使得客户端的...

    我们考察一个保安系统的例子来讲门面(Facade)模式

    在使用门面模式的设计中,我们可以定义一个Facade类,负责控制所有的仪器。例如,我们可以定义一个SecuritySystemFacade类,拥有启动、关闭、激活警报器等方法。这样,操作人员可以使用这个Facade类来控制整个保安...

    设计模式之门面模式

    门面模式(Facade Pattern)是软件工程中一种常用的设计模式,属于结构型模式。它提供了一个统一的接口,用来访问子系统中的一群接口。门面模式使得子系统的使用更为简单,同时也隐藏了子系统的复杂性,使得客户端...

    设计模式之Facade

    eclipse工程文件 包含代码 有助理解 门面(Facade)模式 <br>外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。 <br>医院的例子 <br>用一个例子进行说明,如果把医院...

    Java设计模式实验七门面模式和代理模式

    门面模式(Facade Pattern)是一种结构型模式,它提供了一个统一的接口,使得子系统更加易于使用。门面模式的主要目的是将一个或多个复杂的子系统集成到一个简洁的接口中,使得客户端可以更方便地使用子系统。 在...

    Java实现的门面模式

    门面模式(Facade Pattern)是设计模式中的一种结构型模式,它的主要目的是为了解决复杂的系统接口提供一个简单易用的统一入口。在Java中,门面模式的应用可以帮助我们更好地组织代码,降低系统的耦合度,提高代码的...

    门面模式(代码)

    门面模式(Facade Pattern)是一种设计模式,属于结构型模式,它的主要目的是为了解耦复杂的系统,提供一个统一的入口,使得外部客户端可以更简单、更方便地与系统交互,而无需关注系统的内部实现细节。在门面模式中...

    门面模式门面模式

    门面模式(Facade Pattern)是一种结构型设计模式,它的主要目的是提供一个统一的接口,用来访问子系统中的一组接口。这个接口使得子系统更容易使用,同时也减少了客户端代码与子系统之间的耦合。门面模式通常用于...

    23种设计模式--门面模式

    门面模式(Facade Pattern)是软件工程中一种常用的设计模式,属于结构型模式。它为一个复杂的子系统提供了一个统一的接口,使得客户端可以更容易地使用这个子系统,而无需了解其内部的具体实现细节。在实际开发中,...

    门面模式(PPT)

    门面模式(Facade Pattern)是一种设计模式,它在软件工程中扮演着简化复杂系统接口的角色。门面模式的核心思想是为一个复杂的子系统提供一个单一、简洁的接口,使得客户端可以更容易地理解和使用该子系统,而无需...

    JAVA设计模式(门面模式)—视频

    什么是门面模式(Facade) 外部与一个子系统的通信必须通过一个统一的门面对象进行。这就是门面模式。 门面模式的结构 涉及两个角色: 门面角色:客户端可以调用这个角色的方法。此角色知道子系统的功能和责任。在...

    设计模式之门面模式Java实现和类设计图

    门面模式(Facade Pattern)是软件工程中一种常用的设计模式,属于结构型模式,它提供了一个统一的接口,用于访问子系统中的一组接口。在面向对象设计中,门面模式为子系统提供了更简单的接口,使得客户端可以更容易...

    设计模式之门面模式(附demo)

    门面模式(Facade Pattern)是软件工程中一种结构型设计模式,它提供了一个统一的接口,用来访问子系统中的一组接口。这个统一的接口使得客户端不必了解子系统内部的复杂性,只需要与门面进行交互即可。门面模式简化...

Global site tag (gtag.js) - Google Analytics