外观模式

facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种,facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单界面。这个一致的简单的界面被称为facade

Facade

为调用方,定义简单的调用接口

Clients

调用者,通过facade接口调用提供某功能的内部类群

Packages

功能提供者,指提供功能的类群

适用于:为子系统提供统一一套接口,让子系统更加容易使用。

//
// Created by andrew on 2020/11/21.
//
#include <iostream>using namespace std;class SubSystemA{public:void doThing(){cout << "Subsystem A run" << endl;}
};class SubSystemB{public:void doThing(){cout << "SubSystem B run" << endl;}
};class SubSystemC{public:void doThing(){cout << "SubSystem B run" << endl;}
};class Facade{public:Facade(){sysA = new SubSystemA;sysB = new SubSystemB;sysC = new SubSystemC;}~Facade(){delete sysA;delete sysB;delete sysC;}public:void doThing(){sysA->doThing();sysB->doThing();sysC->doThing();}private:SubSystemA *sysA;SubSystemB *sysB;SubSystemC *sysC;
};int main(int argc, char *argv[]) {//   没有使用之前cout << "before use facade" << endl;SubSystemA *sysA = new SubSystemA;SubSystemB *sysB = new SubSystemB;SubSystemC *sysC = new SubSystemC;sysA->doThing();sysB->doThing();sysC->doThing();delete sysA;delete sysB;delete sysC;
//    是要给你之后cout << "after usr facade" << endl;Facade *f = new Facade;f->doThing();delete f;return 0;
}

23种设计模式C++源码与UML实现--外观模式相关推荐

  1. 23种设计模式C++源码与UML实现--建造者模式

    建造者模式 代码仓库地址:建造者模式 Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种.Builder模式是一种对象创建模式之一,用来隐藏复合对象的创建过程.他把 ...

  2. 23种设计模式C++源码与UML实现--迭代器模式

    迭代器模式 Iterator模式也叫迭代模式,是行为模式之一,他把对容器种包含的内部对象的访问委让给外部类,使用Iterator按顺序进行遍历访问的设计模式. 在使用Iterator模式之前,首先应该 ...

  3. 23种设计模式C++源码与UML实现--命令模式

    命令模式 Command模式也叫命令模式,是行为设计模式的一种.Command模式通过被称为Command的类封装了对目标对象的调用行为以及调用参数. 在面向对象的程序设计中,一个对象调用另外一个对象 ...

  4. 23种设计模式C++源码与UML实现--原型模式

    原型模式 一个复杂对象,具有自我复制功能,统一一套接口. 原型模式主要面对的问题是:某些结构复杂的对象的创建工作,由于需求的变化,这些对象进场面对着剧烈的变化,但是他们却拥有比较一致的接口. 原型模式 ...

  5. 23种设计模式C++源码与UML实现--桥接模式

    桥接模式 Bridge模式,又叫做桥接模式,是构造型的设计模式之一.Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为让类承担不同的责任.它的主要特点是把抽象(Abstractio ...

  6. 23种设计模式C++源码与UML实现--状态模式

    状态模式 State模式也叫状态模式,是行为模式的一种,State模式允许通过改变对象的内部状态而改变对象的行为,这个对象变现的好像修改了它的类一样. 状态模式主要解决的事当控制一个对象状态的条件表达 ...

  7. 23种设计模式C++源码与UML实现--策略模式

    策略模式 Strategy模式也叫策略模式,是行为模式之一,它对一系列的算法加以封装,为所有算法定义一个抽象算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择交给客户端决定. ...

  8. 23种设计模式C++源码与UML实现--组合模式

    组合模式 Composite模式也叫做组合模式,是构造型的设计模式之一.通过递归的手段构造树形的对象结构,并可以通过一个对象来访问整个对象树. Component树形结构的节点抽象 为所有的对象定义统 ...

  9. 23种设计模式C++源码与UML实现--工厂模式

    工厂模式 工厂方法模式同样属于类的创建型模式,又被称为多态工厂模式.工厂方法的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中. 核心工厂类不在负责产品的创建,这样核心类成为一个抽象 ...

最新文章

  1. undefined reference to android log print,undefined reference to '__android_log_print'
  2. metasploit msfvenom使用实例
  3. Halcon算子盘点:Chapter 19:轮廓线XLD
  4. 机房合作--那些数据类型
  5. Httputils请求网络数据
  6. vnc 树莓派 链接_树莓派 VNC Viewer 远程桌面配置教程
  7. JS实现表单多文件上传样式美化支持选中文件后删除相关项
  8. 萤石摄像头实现web端监控预览以及录像回放
  9. 为激励英特尔建厂 美国俄亥俄州拿出20亿美元优惠政策
  10. ZXing条形码识别框架识别的条型码的种类
  11. MySQL全文索引短单词或数字不生效的问题
  12. 区块链Baas平台纳管实战
  13. 4底2分化查找程序的作业树
  14. 苹果或将采用高通屏下指纹方案,5GiPhone基带由三星、高通共同提供...
  15. 基于Qt5 的串口助手开发
  16. 人力资源管理专业知识与实务(初级)【11】
  17. 最新的百度网盘不限速下载工具 - 100兆速度理论10m/s
  18. Git push的常见用法
  19. 三位符号位如何看正负计算机,如何判断三角函数值符号的正负
  20. ps -aux | grep 用法

热门文章

  1. IPv6推进将非常漫长
  2. Citrix VDI攻略之三:DDC安装及配置
  3. Apache 2.2 + Php 5.1 安装问题解决[原创]
  4. 《机器学习实战》chapter02 K-近邻算法(KNN)
  5. 《Head First Python》第四章--持久存储
  6. Batch Normalization的一些个人理解
  7. 2019牛客暑期多校训练营(第九场)-E All men are brothers
  8. Ubuntu升级python版本
  9. 部署Django到云服务器(centos+nginx+mysql+uwsgi+python3)【操作篇(1)】
  10. 网络安全概念是什么?互联网时代它为何如此重要?