1、门面模式提出
在组件的开发过程中,某些接口之间的依赖是比较紧密的,如果某个接口发生变化,其他的接口也会跟着发生变化,这样的代码违背了代码的设计原则。门面设计模式是在外部客户程序和系统程序之间添加了一层中间接口,使依赖的接口之间相互解耦。
2、需求描述
有3个公司,每个公司都有自己的工作流方式;客户端代码使用这3个公司的工作流。
3、门面模式代码实现
#include <iostream>
class CorporationA {
public:
void WorkFlow() {
std::cout << "CorporationA WorkFlow" << std::endl;
};
};
class CorporationB {
public:
void WorkFlow() {
std::cout << "CorporationB WorkFlow" << std::endl;
};
};
class CorporationC {
public:
void WorkFlow() {
std::cout << "CorporationC WorkFlow" << std::endl;
};
};
class Facade {
public:
void Work() {
workA.WorkFlow();
workB.WorkFlow();
workC.WorkFlow();
};
private:
CorporationA workA;
CorporationB workB;
CorporationC workC;
};
int main() {
Facade facade;
facade.Work();
return 0;
}
运行结果如下: