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

外观模式的使用场合:

A: 设计初期阶段,应该要有意识的将不同的两个层分离。

B: 在开发阶段,子系统往往由于不断的重构演化而变得越来越复杂,

C: 在维护一个遗留的大系统时,可能这个系统已经非常难以维护和扩展。

将 和复杂的子系统打交道的任务交给 Facade, 客户端只需要调用简洁的Facade方法。

实例:

subsystem.h    subsystem.cpp

#ifndef SUBSYSTEM_H
#define SUBSYSTEM_H#include<iostream>
using namespace std;class SubSystemA
{
public:void MethodA();
};class SubSystemC
{
public:void MethodC();
};class SubSystemB
{
public:void MethodB();
};#endif // SUBSYSTEM_H
#include "subsystem.h"void SubSystemA::MethodA()
{cout << "SubSystem MethodA" << endl;
}void SubSystemB::MethodB()
{cout << "SubSystem MethodB" << endl;
}void SubSystemC::MethodC()
{cout << "SubSystem MethodC" << endl;
}

facade.h -- facade.cpp外衣

#ifndef FACADE_H
#define FACADE_H#include "subsystem.h"class Facade
{
public:Facade();void MethodA();void MethodB();private:SubSystemA *subA;SubSystemB *subB;SubSystemC *subC;
};#endif // FACADE_H
#include "facade.h"Facade::Facade()
{subA = new SubSystemA;subB = new SubSystemB;subC = new SubSystemC;
}void Facade::MethodA()
{cout << "Facade MethodA" << endl;subA->MethodA();subC->MethodC();
}void Facade::MethodB()
{cout << "Facade MethodB" << endl;subB->MethodB();subC->MethodC();
}

main.cpp

#include <iostream>
#include "facade.h"
using namespace std;int main()
{cout << "Facade test!" << endl;Facade facade;facade.MethodA();facade.MethodB();return 0;
}

转载于:https://www.cnblogs.com/xj626852095/p/3648193.html

大话设计模式--外观模式 Facade -- C++实现实例相关推荐

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

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

  2. 设计模式:外观模式(Facade)

    外观模式(Facade)也叫过程模式, 外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 外观模式通过定义一个一致的接口,用以屏蔽内部子系 ...

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

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

  4. 趣谈设计模式 | 外观模式(Facade):为子系统提供高粒度接口

    文章目录 案例:自动驾驶飞机 外观模式 总结 完整代码与文档 案例:自动驾驶飞机 随着自动驾驶汽车的大卖,特X拉开始把目标转向飞行领域,打算开发出一款能够完全自动行驶的飞机,系统初步的设计如下 我们将 ...

  5. 设计模式.外观模式Facade

    定义 外观模式,一般用在子系统与访问之间,用于对访问屏蔽复杂的子系统调用,采用耳目一新的外观类提供的简单的调用方法,具体的实现由外观类去子系统调用. 外观模式是一种中间件类型的模式,使用外观模式之后子 ...

  6. 大话设计模式--建造者模式 Builder -- C++实现实例

    1. 建造者模式,将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示. 用户只需要指定需要建造的类型就可以得到他们,而具体建造的过程和细节就不需要知道了. 关键类Directo ...

  7. 【白话设计模式二】外观模式(Facade)

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 白话设计模式 工厂模式 单例模式 [白话设计模式一]简单工厂模式(Simple Factory) [白话设计模式二] ...

  8. php facade模,PHP 设计模式之外观模式 Facade

    简单描述 外观模式(Facade pattern),为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用. 外观模式又称为门面模式,它是一种对象结构型模式,遵循迪米特法则,又称最少知道原则 ...

  9. 外观模式(Facade)----设计模式

    外观模式(Facade)----设计模式 文章目录 外观模式(Facade)----设计模式 什么是外观模式呢? 外观模式的基本介绍 制造一个影院管理? 实现代码 总结 什么是外观模式呢? 以我们中常 ...

  10. 如何让孩子爱上设计模式 ——11.外观模式(Facade Pattern)

    如何让孩子爱上设计模式 --11.外观模式(Facade Pattern) 标签: 设计模式初涉 场景引入 相信各位玩过LOL英雄联盟游戏的童鞋,对下面两个英雄都不会陌生吧:       分别是瑞雯和 ...

最新文章

  1. ASP.NET通过递归添加树(Treeview)
  2. 屏幕截图在网页设计中应用的30个优秀案例
  3. 【题解】 bzoj2748 [HAOI2012]音量调节 (动态规划)
  4. 深入浅出gRPC——极客时间李林锋
  5. 本次案例:对于sun 服务器的故障排查
  6. 【从入门到放弃-ZooKeeper】ZooKeeper入门
  7. linux嵌入式移植培训,达内嵌入式培训大讲堂之Linux系统移植
  8. 故宫网站遭“围攻”!
  9. 谷歌浏览器整个网页截图方法
  10. python groupby用法_Python数据分析黑色星期五-知识点整理
  11. 线性插值 多项式插值 样条插值 牛顿插值总结
  12. ubuntu12.04-- vi 使用
  13. keras中使用ImageDataGenerator对MINST数据集数据增强
  14. 【项目管理/PMP/第六版/新考纲】纯干货!项目发展史/项目定义/项目集/项目组合/十五至尊图
  15. 河北省人民检察院利用深信服桌面云办公,实现智慧检务
  16. JavaScript函数(二)回调函数
  17. Unity打包篇:Unity 导出 Gradle 工程出现release builds have to be signed when using Gradle解决办法
  18. 稻城亚丁6日游之第五天(新都桥-丹巴)
  19. Linux基础(2)
  20. c语言数学语文英语成绩编程,输入10名学生的序号和每个学生三门功课(数学、英语、C语言程序设计)的成绩,编程计算出每个学生的总分...

热门文章

  1. Java 设计模式 之 适配器模式(Adapter)
  2. MemCache在Windows下环境的搭建及启动
  3. java课程设计---彩票销售管理系统
  4. [Bootstrap]7天深入Bootstrap(1)入门准备
  5. ubuntu+nginx+php-cgi 环境开启php的curl功能
  6. 批量给hive的表加分区
  7. Java空字符串与null区别
  8. 让 ADO.NET 2.0 的 SqlCommand 和 SqlDataAdapter 合作
  9. gcc/g++/make/cmake/makefile/cmakelists的恩恩怨怨
  10. Python---基础-运算符int和range函数