C++ 设计模式 —— 10.外观模式
2019-12-12 本文已影响0人
JeremyYv
-
外观模式:一种结构型设计模式
-
应用场景:
外观模式应用很多。
执行一个过程,中间有很多子过程,子过程的顺序必须固定,但是不需要执行这个过程的用户知道。
这时应该考虑外观模式,也称为门面模式。
举例:
用visual studio写好代码后,只需要按一下F7就可以等待编译完成了。但是编译期间的步骤是逐一进行的,会先对代码进行语义分析,然后生成中间代码,再生成汇编代码,最后链接库,编译才全部完成。这个F7便是一种外观模式,在按下的同时,并不需要知道编译期间的各个步骤,也可以完成编译。 -
实现方式:
写一个外观类,提供一个方法,将需要执行的子过程在该方法中逐一调用。
使用者只需要使用这一个外观类的接口而无需了解所有子过程的接口。
以下是外观模式的简单代码实现
#include <iostream>
using namespace std;
//语义分析
class CSyntaxParser
{
public:
static void SyntaxParser()
{
cout << "SyntaxParser" << endl;
}
};
//生成中间代码
class CGenMidCode
{
public:
static void GenMidCode()
{
cout << "GenMidCode" << endl;
}
};
//生成汇编代码
class CGenAssemblyCode
{
public:
static void GenAssemblyCode()
{
cout << "GenAssemblyCode" << endl;
}
};
//链接
class CLinkSystem
{
public:
static void LinkSystem()
{
cout << "LinkSystem" << endl;
}
};
//外观模式
class CFacade
{
public:
static void Facade()
{
CSyntaxParser::SyntaxParser();
CGenMidCode::GenMidCode();
CGenAssemblyCode::GenAssemblyCode();
CLinkSystem::LinkSystem();
}
};
主函数中的使用
int main()
{
CFacade::Facade();
return 0;
}
控制台输出结果
SyntaxParser
GenMidCode
GenAssemblyCode
LinkSystem
外观模式和单例模式搭配使用,效果更佳~
如有错误,欢迎指正