一、原理讲解
门面模式也叫做外观模式,实质就是一个封装接口,通常是将一类功能或者一个层次功能用一个函数封装起来,供客户端统一调用。
1.1意图
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
1.2应用场景
- 当你要为一个复杂子系统提供一个简单接口时;
- 客户程序与抽象类的实现部分之间存在着很大依赖性;
- 当你需要构建一个层次的子系统时,使用Facade模式定义子系统中每层的入口点;
1.3结构图(UML图)
1.4代码实现步骤
a1 定义一个门面接口类Facade,定义两个接口函数openSwitch()和closeSwitch(),提供客户端统一调用;
a2 定义两个子系统类Television和WaterHeater,都拥有两个成员函数openSwitch()和closeSwitch(),两个的功能都需要打开开关和关闭开关;
a3 在门面类Facade的成员函数openSwitch()和closeSwitch()中,统一调用调用子系统的开启开关和关闭开关功能;
二、实现代码
比如本例子中所有打开开关和关闭开关分别是两个接口,比如电视、热水器都要打开开关,所以可以用门面模式用一个打开开关接口统一隔离和管理;
FacadePattern.cpp
#include <iostream>
using namespace std;
#define DELETE(pointer) delete pointer; pointer=nullptr
class Television {
public:
void openSwitch(