Facade 外观对象结构模式
来源:互联网 发布:淘宝刷客怎么判刑2016 编辑:程序博客网 时间:2024/06/03 04:31
Facade 外观对象结构模式:为子系统中的一级接口提供了一个一致的界面,Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
Facade 的意图是希望简化原有系统的使用方式,定义自己的接口。当我们只需要使用某个复杂系统的子集,或者,需要以一种特殊的方式与系统交互时,可以使用 Facade 模式。Facade 适用于模式适用于:
1)当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类,这使得子系统更具有可重用性,也更容易对子系统进行定制,但也给那些不需要定制子系统的用户带来一些使用上的困难。Facade 可以提供一个简单的缺省视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过 Facade 层。
2)客户程序与抽象类的实现部分之间存在着很大的依赖性。引入 Facade 将这个子系统与客户以及其它的子系统分离,可以提高子系统的独立性和可移植性。
3)当你需要构建一个层次结构的子系统时,使用 facade 模式定义子系统中每层的入口点。如果子系统之间是相互依赖的,你可以让它们通过 facade 进行通讯,从而简化了它们之间的依赖关系。
Facade 的简单结构图如下:
Facade 模式的想法及结构图都非常简单,但却是应用最广泛的模式之一。以上类图可能太过简单,不足以表达 Facade 模式的真正涵义,设计模式一书给出的结构图更能表示 Facade 的作用:
Facade 知道哪些子类系统负责处理请求,将客户的请求代理给适当的子系统对象。SubSystem 实现子系统的功能,处理由 Facade 对象指派的任务,子系统没有 Facade 的任务相关信息,即没有指向 facade 的指针。Facade 将客户发送的请求转发给适当的子系统对象,尽管子系统中的有关对象在做实际工作,但 Facade 模式本身也必须将它的接口转换成子系统的接口。使用 Facade 的客户不需要直接访问子系统对象。
Facade 的简单代码如下:
1: //Facade.h
2: #pragma once
3: #include
4:
5: class Subsystem1
6: {
7: public:
8: Subsystem1(){ }
9: ~Subsystem1(){ }
10: void Operation()
11: {
12: std::cout << "Subsystem1 operation.." << std::endl;
13: }
14: };
15: class Subsystem2
16: {
17: public:
18: Subsystem2(){ }
19: ~Subsystem2(){ }
20: void Operation()
21: {
22: std::cout << "Subsystem2 operation.." << std::endl;
23: }
24: };
25:
26: // Facade
27: class Facade
28: {
29: public:
30: Facade()
31: {
32: _subs1 = new Subsystem1();
33: _subs2 = new Subsystem2();
34: }
35: ~Facade()
36: {
37: delete _subs1;
38: delete _subs2;
39: }
40:
41: void OperationWrapper()
42: {
43: _subs1->Operation();
44: _subs2->Operation();
45: }
46: private:
47: Subsystem1* _subs1;
48: Subsystem2* _subs2;
49: };
50:
51: int main()
52: {
53: Facade* f = new Facade();
54: f->OperationWrapper();
55:
56: return EXIT_SUCCESS;
57: }
58:
- Facade 外观对象结构模式
- FACADE 外观模式 --对象结构型模式
- 门面模式(Facade 外观模式,对象结构型模式)
- 结构模式:Facade外观模式
- 设计模式之外观(Facade)---对象结构型模式
- 结构模式之Facade(外观)
- 【结构型模式】facade(外观)
- 结构型模式-外观(facade)
- 2.5 Facade(外观) -- 对象结构型模式
- Facade外观模式(结构型模式)
- [设计模式-结构型]外观模式(Facade)
- 结构型模式-----外观模式(Facade)
- 结构型模式-Facade ( 外观模式 )
- 结构型模式:外观模式(Facade Pattern)
- 外观模式/Facade模式(结构型)
- Facade模式(外观模式 结构型)
- 结构型模式:Facade(外观)
- 外观模式Facade(结构型)
- 注意不可见的字符!
- 找回ext3文件系统的Linux下误删的数据
- QuickCSharp框架开发(1)-系统表结构设计
- GObject系列教程
- HTTP 错误 401.2 - Unauthorized 由于身份验证头无效,您无权查看此页。 IIS7.0解决办法
- Facade 外观对象结构模式
- 汇编语言学习笔记
- Zend framework1.9.3的学习
- Fuck,干
- 澳大利亚 中部 Alice Spring 艾尔斯岩(Ayers Rock)游记
- D3D打开灯光后,设置了环境光颜色,但是发现模型仍然是黑色
- 一张图说尽CRM
- Caused exception message is: ORA-01789: query block has incorrect number of result columns
- 测试管理一点点建议