目录

基本概念

代码与实例


基本概念

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

增加外观Facade可以提供一个简单的接口,减少它们之间的依赖;

为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。

刚开始学面向对象程序设计的时候,基本上都会默认采用这种方法,因为它完美的提现了依赖倒转原则和迪米特法则的思想。

UML图如下:

代码与实例

程序运行截图如下:

源码如下:

Head.h

#ifndef HEAD_H
#define HEAD_Hclass SubSystemOne;
class SubSystemTwo;
class SubSystemThree;
class SubSystemFour;class Facade{public:Facade();~Facade();void methodA();void methodB();void methodC();private:SubSystemOne *one;SubSystemTwo *two;SubSystemThree *three;SubSystemFour *four;
};class SubSystemOne{public:void methodOne();
};class SubSystemTwo{public:void methodTwo();
};class SubSystemThree{public:void methodThree();
};class SubSystemFour{public:void methodFour();
};#endif    //HEAD_H

Head.cpp

#include "Head.h"
#include <iostream>
#include <string>
using namespace std;Facade::Facade()
{one = new SubSystemOne;two = new SubSystemTwo;three = new SubSystemThree;four = new SubSystemFour;
}Facade::~Facade()
{delete one;delete two;delete three;delete four;
}void Facade::methodA()
{cout << "方法组A" << endl;one->methodOne();two->methodTwo();three->methodThree();
}void Facade::methodB()
{cout << "方法组B" << endl;three->methodThree();four->methodFour();two->methodTwo();
}void Facade::methodC()
{cout << "方法组C" << endl;one->methodOne();three->methodThree();
}void SubSystemOne::methodOne()
{cout << "SubSystemOne::methodOne()" << endl;
}void SubSystemTwo::methodTwo()
{cout << "SubSystemTwo::methodTwo()" << endl;
}void SubSystemThree::methodThree()
{cout << "SubSystemThree::methodThree()" << endl;
}void SubSystemFour::methodFour()
{cout << "SubSystemFour::methodFour()" << endl;
}

main.cpp

#include "Head.h"
#include <iostream>
#include <string>
using namespace std;int main(int *argc, int *argv[]){Facade *facada = new Facade;facada->methodA();cout << "---------------华丽分割线---------------"<< endl;facada->methodC();cout << "---------------华丽分割线---------------"<< endl;facada->methodB();delete facada;getchar();return 0;
}

C++设计模式-外观模式相关推荐

  1. Python设计模式-外观模式

    Python设计模式-外观模式 代码基于3.5.2,代码如下; #coding:utf-8 # 外观模式class AlarmSensor:def run(self):print("Alar ...

  2. 设计模式--------外观模式

    设计模式--------外观模式 介绍外观模式的四大问题 现在的写法有什么问题吗? 为什么要用外观模式? 什么是外观模式? 外观模式有什么好处? 使用一个例子进行问题的说明 假如要制作一个智能系统,要 ...

  3. [设计模式]外观模式

    1. 定义 外观模式 提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口,让子系统更加容易使用. 外观不仅简化了系统内接口的使用,也将客户从组件中的子系统中解耦,外观和适配器都可 ...

  4. Java设计模式---外观模式

    外观模式(Facade) 外观模式的意图是:为子系统提供一个接口,便于它的使用. 解释: 简单的说,外观模式就是封装多个上层应用需要的方法,使得上层调用变得简单,为上层提供简单的接口,是设计模式中一种 ...

  5. Java 设计模式——外观模式

    概述 今天要说的外观模式是一个相对简单的设计模式,而且在日常的开发中,可能你也会时常使用它,只是你可能并未想过这是一个设计模式.本文会从一些实例着手,来对本文要说明的外观模式进行尽可能全面的讲解.希望 ...

  6. Java设计模式-外观模式

    我又来了,继Java设计模式之桥接模式后,现在来到了外观模式啦,外观模式又称为门面模式啦

  7. 大话设计模式—外观模式

    外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性. 这种模式涉及 ...

  8. 设计模式 外观模式 一键电影模式

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/25837275 这个模式比较简单,嘿嘿,简单写一下. 老样子,先看 外观模式(Fa ...

  9. 8. 设计模式 外观模式 一键电影模式

    这个模式比较简单,嘿嘿,简单写一下. 老样子,先看 外观模式(Facade Pattern)定义:提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层的接口,让子系统更容易使用.其实就是 ...

  10. 大话设计模式——外观模式

    股民炒股代码 /*** 股票1*/ public class Stock1 {// 卖股票public void sell() {System.out.println("股票1卖出" ...

最新文章

  1. python读取、写入、移动、复制文件(夹)以及其他关于文件(夹)的操作
  2. “最害怕过周末”、“希望每天都干活”、“水电费又白交了”
  3. Android的Gson的使用方法,实现Json结构间相互转换
  4. 2022春节法律思维
  5. cuda Memory Fence Functions
  6. python 近期用到的基础知识汇总(八)
  7. BGP链路冗余使用直接接口和回环口分析
  8. C++访问WebService(gSoap方式和com组件方式)
  9. DOM drag 事件
  10. 注塑行业APS解决方案
  11. 安装webpack powershell出现 Set-ExecutionPolicy : 对注册表项“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell
  12. CSS基础学习(二)
  13. 登陆界面改怎么测试,分析,测试用例
  14. 【字节跳动实习面经(测试开发岗 一面)四个字:破涕为笑】
  15. 用Python删除电脑中的重复文件,竟如此简单
  16. 辅助写作软件:PPT写作助手 帮助创作多图少字文章
  17. 国内矿场面临全面关闭,为什么FIL却依旧那么淡定?
  18. Hutool官网地址
  19. sqlmap超详细使用说明书
  20. 【OpenCV 例程 300篇】241. 尺度不变特征变换(SIFT)

热门文章

  1. C# 将内存中的datatable数据导出为Excel(方法二,创建Excel对象导出)
  2. 毕业后想成为一名软件开发工程师,应该如何学习,大牛给出建议!
  3. 可视化实战!Python+BI,手把手教你做炫酷的NBA可视化分析
  4. 终极神器盘点的FreeEIM
  5. 无聊 乱写写 CSDN博客挺好玩的 确实
  6. API 层实现语音录制
  7. 5分钟 0元搭建个人独立博客网站(一)
  8. 易企秀 伪静态 linux,易企秀无法预览(伪静态配置问题)!
  9. java j2se1.5_Java教程 用J2SE1.5建立多任务的Java应用程序
  10. el table 固定表头和首行_表头太太太复杂了,如何批量打印?简单!