- 浏览: 98327 次
- 性别:
- 来自: 深圳
文章分类
最新评论
Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种。Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作facade。
本文介绍设计模式中的外观(Facade)模式的概念,用法,以及实际应用中怎么样使用Facade模式进行开发。
Facade模式的概念
Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作facade。
在应用系统中,为了实现某具有复杂功能的模块或子系统等时,往往需要为其设计和实现很多很小的类,也就是说,该模块或子系统是由一组具有类似功能的类群组合而成。这样一来,怎么调用这些类就成了问题。Facade就是这样一种模式,设计一个被称为facade的类,该类提供一个简单的调用接口:
- 隐藏具体的实现细节,简化调用关系。
- 使得调用方的代码更加简洁明了。
- 通过facade,降低外部调用类与内部被调用类间的耦合程度。
- 可以为每个不同的任务需要,准备经过良好设计的简易的API。
Facade模式可以用下面的类图来表示:
在应用系统中,为了实现某具有复杂功能的模块或子系统等时,往往需要为其设计和实现很多很小的类,也就是说,该模块或子系统是由一组具有类似功能的类群组合而成。这样一来,怎么调用这些类就成了问题。Facade就是这样一种模式,设计一个被称为facade的类,该类提供一个简单的调用接口:
- 隐藏具体的实现细节,简化调用关系。
- 使得调用方的代码更加简洁明了。
- 通过facade,降低外部调用类与内部被调用类间的耦合程度。
- 可以为每个不同的任务需要,准备经过良好设计的简易的API。
Facade模式可以用下面的类图来表示:
Facade
为调用方定义简单的调用接口。
Clients
调用者。通过Facade接口调用提供某功能的内部类群。
Packages
功能提供者。指提供功能的类群(模块或子系统)。
但Facade模式的目的是简化调用关系;Adapter模式是为不同的模块/子系统提供一个统一的接口(支持多态),旨在将一个或多个已经存在的不统一的接口转化成为另一个统一的接口。
举例说明:
1,Adapter模式:
有银行A系统,银行B系统,它们具有大致一样的功能,但它们的对外接口各不一样。
如果需要在C系统中使用A系统或B系统,为了接口的一致,我们需要在C系统中实现一个Adapter,通过这个Adapter提供的接口,我们就可以透明的调用银行A系统的功能、或者银行B系统的功能了;
2,Facade模式:
有银行A系统,它具有非常复杂的功能,有融资,贷款,存款,取款,信用审查,担保等等功能,
如果需要在C系统中,只需用到A系统的一部分功能,比如融资,我们就可以为需要用到的融资功能封装一个Facade,通过这个facade,我们不用管A系统的内部是怎么实现融资业务的,也不用管信用审查是否通过,是否具有充分的担保资源等等,大大简化了客户端的调用。
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();
}
}
为调用方定义简单的调用接口。
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();
}
}
发表评论
-
设计模式之 State - 状态模式
2010-12-18 16:49 1071State模式也叫状态模式,是由GoF提出的23种软件设计模式 ... -
设计模式之 Strategy - 策略模式
2010-12-18 16:46 1343Strategy模式也叫策略模 ... -
设计模式之 Visitor - 访问者模式
2010-12-18 16:45 1443Visitor模式也叫访问者 ... -
设计模式之 Template Method - 模板方法模式
2010-12-18 16:41 1562Template Method模式也叫模板方法模式,是由G ... -
设计模式之 Observer - 观察者模式
2010-12-18 16:33 1371Observer模式也叫观察者 ... -
设计模式之 Memento - 备忘录模式
2010-12-18 16:31 1043Memento模式也叫备忘录 ... -
设计模式之 Mediator - 中介者模式
2010-12-18 16:29 1103Mediator模式也叫中介者模式,是由GoF提出的23种软件 ... -
设计模式之 Iterator - 迭代模式
2010-12-18 16:27 1162Iterator模式也叫迭代模式,是由GoF提出的23种设 ... -
设计模式之 Interpreter - 解释器模式
2010-12-18 16:23 983Interpreter模式也叫解释器模式,是由GoF提出的 ... -
设计模式之 Command - 命令模式
2010-12-18 16:20 864Command(CoR)模式也叫命 ... -
设计模式之 Chain of Responsibility - 职责链模式
2010-12-18 16:18 1191Chain of Responsibility(CoR)模 ... -
设计模式之 Proxy - 代理模式
2010-12-16 23:45 1040Proxy模式也叫代理模式,是由GoF提出的23种软件设计 ... -
设计模式之 Flyweight - 享元模式
2010-12-16 23:42 1031Flyweight模式也叫享元模式,是由GoF提出的23种 ... -
设计模式之 Singleton - 单态模式
2010-11-26 11:58 845Singleton模式也叫单态模式,是由GoF提出的2 ... -
设计模式之 Decorator - 装饰模式
2010-11-25 23:48 802装饰模式,The Decorator Pattern atta ... -
设计模式之 Composite - 组合模式
2010-11-25 23:35 1448Composite模式也叫组合 ... -
设计模式之 Bridge - 桥接模式
2010-11-25 23:08 1006Bridge模式也叫桥接模式,是由GoF提出的23种软件设计模 ... -
设计模式之 Adapter - 适配器模式
2010-11-25 22:58 904Adapter模式也叫适配器模式,是由GoF提出的23种设 ... -
设计模式之Prototype - 原型模式
2010-11-25 22:14 1123Prototype模式也叫原型模式,是由GoF提出的23种设计 ... -
设计模式之 Builder - 建造者模式
2010-11-18 23:51 1034Builder模式也叫建造者模式或者生成器模式,是由GoF ...
相关推荐
设计模式之外观模式 facade 采用JAVA实现,请结合文档看,欢迎讨论。。
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
设计模式面面观(13):外观模式(Facade Pattern)-结构型模式 http://blog.csdn.net/fanweiwei/archive/2008/04/17/2299641.aspx
外观模式
外观模式 Facade 设计模式 还请各位大S指教。
设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计模式之Flyweight(享元) 行为模式: 设计模式之Template ...
章节介绍:1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立...10、设计模式之State 11、设计模式之Facade(外观) 12、设计模式之Interpreter(解释器) 13、设计模式之Visitor
c++设计模式-结构型模式-外观模式;qt工程;c++简单源码; 外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,...
设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计模式之Flyweight(享元) 行为模式: 设计模式之Template ...
C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式) (Level 300)
java 设计模式 Facade外观模式 Simple Factory 简单工厂模式,代码有点罗嗦,不过可移植性很强
- 外观模式(Facade) - 享元模式(Flyweight) - 观察者模式(Observer) - 模板方法模式(Template Method) - 策略模式(Strategy) - 责任链模式(Chain of Responsibility) - 中介者模式(Mediator) - 访问者模式...
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第11节:结构型模式Facade外观模式
设计模式中的facade外观模式在JavaScript开发中的运用_.docx
facade-design-pattern-in-php:学习PHP中的外观设计模式
NULL 博文链接:https://henry406.iteye.com/blog/435439
结构模式:设计模式之Facade(外观),设计模式之Proxy(代理),设计模式之Adapter(适配器),设计模式之Composite(组合),设计模式之Decorator(油漆工),设计模式之Bridge,设计模式之Flyweight(享元). 行为模式:设计模式之...
C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式)
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#设计模式之Facade外观模式解决天河城购物问题,简单描述了外观模式的定义并结合具体实例分析了外观模式解决购物问题的相关步骤与操作技巧,需要的朋友可以参考下