使用场景: 对外提供了一个单一的接口。
例子:如vs中的编译工作,只需要一个按钮(函数),就完成了语法分析,生成中间代码,生成汇编代码,链接成可执行程序或库等等动作;
#include <iostream>
using namespace std;
// 语法分析子系统
class CSyntaxParser
{
public:
void SyntaxParser()
{
cout<<"Syntax Parser"<<endl;
}
};
// 生成中间代码子系统
class CGenMidCode
{
public:
void GenMidCode()
{
cout<<"Generate middle code"<<endl;
}
};
// 生成汇编代码子系统
class CGenAssemblyCode
{
public:
void GenAssemblyCode()
{
cout<<"Generate assembly code"<<endl;
}
};
// 链接生成可执行应用程序或库子系统
class CLinkSystem
{
public:
void LinkSystem()
{
cout<<"Link System"<<endl;
}
};
class Facade
{
public:
void Compile()
{
CSyntaxParser syntaxParser;
CGenMidCode genMidCode;
CGenAssemblyCode genAssemblyCode;
CLinkSystem linkSystem;
syntaxParser.SyntaxParser();
genMidCode.GenMidCode();
genAssemblyCode.GenAssemblyCode();
linkSystem.LinkSystem();
}
};
// 客户端
int main()
{
Facade facade;
facade.Compile();
}