外观模式
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;
}