`

Facade(外观)---对象结构型模式

阅读更多

为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

将一个系统划分成为若干个子系统有利于降低系统的复杂性。一个常见的设计目标是使子系统间的通信和相互依赖关系达到最小。引入一个外观(Facade)对象,它为子系统中较一般的设施提供了一个单一而简单的界面。它给用户提供了一个单一而简单的子系统接口。无需完全隐藏实现功能的那些类,即可将它们结合在一起。

当你要为一个复杂子系统提供一个简单接口时,Facade可以提供一个简单的缺省试图,这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过Facade层。

客户程序与抽象类的实现部分之间存在着很大的依赖性。引入Facade将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。

当你需要构建一个层次结构的子系统时,使用Facade模式定义子系统中每层的入口点。如果子系统之间是相互依赖的,你可以让它们仅通过Facade进行通讯,从而简化了它们之间的依赖关系。

Facade,知道哪些子系统类负责处理请求。将客户的请求代理给适当的子系统对象。

被代理的子系统,处理由Facade对象指派的任务。没有Facade的任何相关信息,即没有指向Facade的指针。

客户程序通过发送请求给Facade的方式与子系统通讯,Facade将这些消息转发给适当的子系统对象。尽管是子系统中的有关对象在做实际工作,但Facade模式本身也必须将它的接口转换成子系统的接口。使用Facade的客户程序不需要直接访问子系统对象。

 

Facade模式优点:

1、它对客户屏蔽了子系统组件,因为减少了客户处理的对象数目并使得子系统使用起来更加方便。

2、它实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件往往是紧耦合的。松耦合关系使得子系统的组件变化不会影响到它的客户。Facade模式有助于建立层次结构系统,也有助于对对象之间的依赖关系分层。Facade模式可以消除复杂的循环依赖关系。这一点在客户程序与子系统是分别实现的时候尤为重要。

用抽象类实现Facade而它的具体子类对应于不同的子系统实现,这可以进一步降低客户与子系统的耦合度。客户就可以通过抽象的Facade类接口与子系统通讯。

 

Abstract Factory 模式可以Facade模式一起使用以提供一个接口,这一接口可用来以一种子系统独立的方式创建子系统对象。Abstract Factory也可以代替Facade模式隐藏那些与平台相关的类。

Mediator模式与Facade模式的相似之处是,它抽象了一些已有的类的功能。然而,Mediator模式的目的是对同事之间的任意通讯进行抽象,通常集中不属于任何单个对象的功能。Mediator的同事对象知道中介者并与它通信,而不是直接与其他同类对象通信。相对而言,Facade模式仅对子系统对象的接口进行抽象,从而使它们更容易使用,它并不定义新功能,子系统也不知道Facade的存在。

通常来讲,仅需要一个Facade对象,因此Facade对象通常属于Singleton模式。

 

分享到:
评论

相关推荐

    C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式) (Level 300)

    C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式) (Level 300)

    C#面向对象设计模式纵横谈\11 结构型模式Facade外观模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第11节:结构型模式Facade外观模式

    Facade 外观模式(结构型模式)

    C#面向对象设计模式纵横谈\C#面向对象设计模式纵横谈\10.Facade 外观模式(结构型模式).wmv )

    C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式)

    C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式)

    设计模式--可复用面向对象软件的基础

    4.5 FACADE(外观)——对象结构型模式 4.6 FLYWEIGHT(享元)——对象结构型模式 4.7 PROXY(代理)——对象结构型模式 4.8 结构型模式的讨论 第五章 行为模式 5.1 CHAIN OF RESPONSIBIL ITY(职责链)——对象行为...

    PHP设计模式(九)外观模式Facade实例详解【结构型】

     外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性。 例子1:一个电源总开关可以控制四盏灯、一个风扇、一台空调...

    C#面向对象设计模式纵横谈(视频与源码)

    C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式) C#面向对象设计模式纵横谈(12):Flyweight 享元模式(结构型模式) C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式) C#面向对象设计模式...

    外观模式(Facade)原理图

    外观模式是一种对象结构型模式,它为子系统中的一组接口提供一个统一的高层接口,使得子系统更加容易使用。以下是外观模式的一些关键点: 简化接口:外观模式通过提供一个统一的接口来简化外部与子系统的通信,这样...

    设计模式可复用面向对象软件的基础.zip

    4.5 FACADE(外观)—对象结构型 模式 121 4.6 Flyweight(享元)—对象结构型 模式 128 4.7 Proxy(代理)—对象结构型 模式 137 4.8 结构型模式的讨论 144 4.8.1 Adapter与Bridge 144 4.8.2 Composite、Decorator...

    设计模式--C++

    4.5 FACADE(外观)—对象结构型模式 121 4.6 Flyweight(享元)—对象结构型模式 128 4.7 Proxy(代理)—对象结构型模式 137 4.8 结构型模式的讨论 144 4.8.1 Adapter 与 Bridge 144 4.8.2 Composite、 Decorator ...

    php设计模式 Facade(外观模式)

    外观模式又称为门面模式,它是一种对象结构型模式。 模式结构: 外观模式的就是让client客户端以一种简单的方式来调用比较复杂的系统,来完成一件事情。 Subsystem: 复制代码 代码如下: class car { public ...

    设计模式:可复用面向对象软件的基础--详细书签版

    4.5 facade(外观)—对象结构型 模式 121 4.6 flyweight(享元)—对象结构型 模式 128 4.7 proxy(代理)—对象结构型 模式 137 4.8 结构型模式的讨论 144 4.8.1 adapter与bridge 144 4.8.2 composite、...

    facade模式

    外观模式属于结构型模式,其意图是为子系统中的一组接口提供一个一致的界面,Façade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。在项目设计中,把一个系统划分成为若干个子系统由利于降低系统的...

    design-pattern-java.pdf

    七个结构型模式 七个结构型模式 适配器模式-Adapter Pattern 不兼容结构的协调——适配器模式(一) 不兼容结构的协调——适配器模式(二) 不兼容结构的协调——适配器模式(三) 不兼容结构的协调——适配器模式...

    软件设计师必读的书-设计模式

    4.5 FACADE(外观)—对象结构型 模式 121 4.6 Flyweight(享元)—对象结构型 模式 128 4.7 Proxy(代理)—对象结构型 模式 137 4.8 结构型模式的讨论 144 4.8.1 Adapter与Bridge 144 4.8.2 Composite、Decorator...

    《设计模式可复用面向对象软件的基础》

    1154.5 FACADE(外观)—对象结构型模式 1214.6 Flyweight(享元)—对象结构型模式 1284.7 Proxy(代理)—对象结构型模式 1374.8 结构型模式的讨论 1444.8.1 Adapter与Bridge 1444.8.2 Composite、Decorator与...

    设计模式可复用面向对象软件的基础.

    4.5 FACADE(外观)—对象结构型 模式 121 4.6 Flyweight(享元)—对象结构型 模式 128 4.7 Proxy(代理)—对象结构型 模式 137 4.8 结构型模式的讨论 144 4.8.1 Adapter与Bridge 144 4.8.2 Composite、Decorator...

    设计模式:可复用面向对象软件的基础

    4.5 FACADE(外观)—对象结构型 模式 121 4.6 Flyweight(享元)—对象结构型 模式 128 4.7 Proxy(代理)—对象结构型 模式 137 4.8 结构型模式的讨论 144 4.8.1 Adapter与Bridge 144 4.8.2 Composite、Decorator...

    《设计模式》中文版(23个设计模式的介绍与运用)

    4.5 FACADE(外观)—对象结构型 模式 121 4.6 Flyweight(享元)—对象结构型 模式 128 4.7 Proxy(代理)—对象结构型 模式 137 4.8 结构型模式的讨论 144 4.8.1 Adapter与Bridge 144 4.8.2 Composite、Decorator...

Global site tag (gtag.js) - Google Analytics