light.h

 #ifndef _LIGHT_H_
#define _LIGHT_H_ #include <iostream> class LIGHT {
public:
void dim(int level) { std::cout << "LIGHT dim to " << level << std::endl; }
}; #endif

popper.h

 #ifndef _POPPER_H_
#define _POPPER_H_ #include <iostream> class POPPER {
public:
void on() { std::cout << "POPPER on" << std::endl; }
void pop() { std::cout << "POPPER pop" << std::endl; }
};
#endif

facade.h

 #ifndef _FACADE_H_
#define _FACADE_H_ #include "light.h"
#include "popper.h" class FACADE {
private:
POPPER & popper;
LIGHT & light;
public:
FACADE(POPPER &_popper, LIGHT &_light) : popper(_popper), light(_light) {}
void watch_movie() {
popper.on();
popper.pop();
light.dim();
}
};
#endif

main.cpp

 #include "facade.h"

 int main()
{
LIGHT light;
POPPER popper;
FACADE facade(popper, light);
facade.watch_movie();
}

Headfirst设计模式的C++实现——外观模式(Facade)的更多相关文章

  1. 设计模式(九)外观模式Facade(结构型)

    设计模式(九)外观模式Facade(结构型) 1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性. ...

  2. 设计模式(二)-- 外观模式(Facade)

    设计模式(二) 外观模式(Facade) 为了解决子系统外部的客户端在使用子系统的时候,既能简单地使用这些子系统内部的模块功能,而又不用客户端去与子系统内部的多个模块交互的问题. 为子系统中的一组接口 ...

  3. 【转】设计模式(九)外观模式Facade(结构型)

    设计模式--外观模式Facade(结构型): 1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性. ...

  4. 设计模式学习系列9 外观模式Facade

    1.概述 自己卖了一辆越野自行车,但毕竟不是自己定制的,买回来之后可能需要更改一下脚蹬,座皮,里程计数器或者刹车系统,假如将自行车看做一个整体系统,对我们而言使用的是自行车,然后我们对自己车构件的修改 ...

  5. 乐在其中设计模式(C#) - 外观模式(Facade Pattern)

    原文:乐在其中设计模式(C#) - 外观模式(Facade Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 外观模式(Facade Pattern) 作者:webabcd 介绍 ...

  6. 8.4 GOF设计模式三: 外观模式 Facade

    GOF设计模式三: 外观模式 Facade  “现有系统”功能强大.复杂,开发“新系统”需要用到其中一部分,但又要增加一部 分新功能,该怎么办?4.1 Facade Pattern: Key Fea ...

  7. Java设计模式(11)外观模式(Facade模式)

    外观模式(Facade)的定义:为子系统中的一组接口提供一个一致的界面. Facade一个典型应用就是数据库JDBC的应用,如下例对数据库的操作: public class DBCompare { C ...

  8. 设计模式系列之外观模式(Facade Pattern)——提供统一的入口

    说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修炼之道)>一书的阅读笔记.个人感觉这本书讲的不错,有兴趣推荐读一读.详细内容也可以看看此书作者的博客https:/ ...

  9. 二十四种设计模式:外观模式(Facade Pattern)

    外观模式(Facade Pattern) 介绍为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.示例有一个Message实体类,某对象对它 ...

随机推荐

  1. 将Excel数据导入MySql

    1.将选中的数据快儿拷贝到一个TXT文本文件中(记得把后面的空格消掉..),假如存到“D:\data.txt”这个位置里. 2.根据要导入的数据快儿建立MySql数据库和表,然后进入命令提示符里使用命 ...

  2. 0703-APP-Notification-statue-bar

    1.展示显示textTicker和仅仅有icon的两种情况:当參数showTicker为true时显示否则不显示 // In this sample, we'll use the same text ...

  3. iOS 音频拼接

    工作中或许会遇到这样的需求,将两段不同的音频合成一个音频(暂且称之为音频拼接),实现起来相对来说不是很难,再介绍如何拼接之前,先了解下AVFoundation下的几个基本知识点. 基本知识 AVAss ...

  4. js倒计时功能

    <input id="countdown" type="text" value="140时50分20秒"> <script ...

  5. php正则测试demo、动态函数

    <?php error_reporting (E_ALL); ini_set ('display_errors', 'on');?><meta http-equiv="Co ...

  6. Android之HTTP网络通信--GET传递(二)

    根据上一篇写的是实现了通过url接口将接口中的数据显示出来,这次根据上一篇的基础,进一步说明一下AsynTask的使用. AsynTask类有几个函数是大家必须知道的. doInBackGround( ...

  7. JAVA_JSON_example

    package cn.kjxy.JSON; import java.util.List; import org.json.JSONArray; import org.json.JSONExceptio ...

  8. Matlab使用难点记忆

    MATLAB的数据显示格式 虽然在MATLAB系统中数据的存储和计算都是双精度进行的,但MATLAB可以利用菜单或format命令来调整数据的显示格式.Format命令的格式和作用如下: l  for ...

  9. CENTOS install summary

    1 centos6.5 before version : first :ultraISO write into u disk,second: copy source iso file into u d ...

  10. Android之调试打印