首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计形式之 Facade - 外观模式

2012-08-24 
设计模式之 Facade - 外观模式Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种。Facade模式为一

设计模式之 Facade - 外观模式
Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种。Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作facade。
本文介绍设计模式中的外观(Facade)模式的概念,用法,以及实际应用中怎么样使用Facade模式进行开发。
??Facade
????为调用方定义简单的调用接口。
Clients
????调用者。通过Facade接口调用提供某功能的内部类群。
Packages
????功能提供者。指提供功能的类群(模块或子系统)。

Facade模式与Adapter模式的区别Facade模式与Adapter模式存在着相当的相似之处:为即存的类提供界面统一的接口,以供外部类调用。
但Facade模式的目的是简化调用关系;Adapter模式是为不同的模块/子系统提供一个统一的接口(支持多态),旨在将一个或多个已经存在的不统一的接口转化成为另一个统一的接口。
举例说明:
1,Adapter模式:
有银行A系统,银行B系统,它们具有大致一样的功能,但它们的对外接口各不一样。
如果需要在C系统中使用A系统或B系统,为了接口的一致,我们需要在C系统中实现一个Adapter,通过这个Adapter提供的接口,我们就可以透明的调用银行A系统的功能、或者银行B系统的功能了;
2,Facade模式:
有银行A系统,它具有非常复杂的功能,有融资,贷款,存款,取款,信用审查,担保等等功能,
如果需要在C系统中,只需用到A系统的一部分功能,比如融资,我们就可以为需要用到的融资功能封装一个Facade,通过这个facade,我们不用管A系统的内部是怎么实现融资业务的,也不用管信用审查是否通过,是否具有充分的担保资源等等,大大简化了客户端的调用。


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();
????}
}

热点排行