头文件
//FacadePattern.h #ifndef FACADE_PATTERN_H #define FACADE_PATTERN_H #include <Windows.h> #include <iostream> using namespace std; namespace FacadePattern { /* ** FileName : FacadePatternDemo ** Author : Jelly Young ** Date : 2014/1/2 ** Description : More information, please go to http://www.jellythink.com */ // 语法分析子系统 class CSyntaxParser { public: void SyntaxParser(); }; // 生成中间代码子系统 class CGenMidCode { public: void GenMidCode(); }; // 生成汇编代码子系统 class CGenAssemblyCode { public: void GenAssemblyCode(); }; // 链接生成可执行应用程序或库子系统 class CLinkSystem { public: void LinkSystem(); }; class Facade { public: void Compile(); }; ////////////////////////////////////////////////////////////////////////// void FacadePattern_Test(); } #endif
实现
#include "FacadePattern.h" namespace FacadePattern { void CSyntaxParser::SyntaxParser() { cout<<"Syntax Parser"<<endl; } void CGenMidCode::GenMidCode() { cout<<"Generate middle code"<<endl; } void CGenAssemblyCode::GenAssemblyCode() { cout<<"Generate assembly code"<<endl; } // 链接生成可执行应用程序或库子系统 void CLinkSystem::LinkSystem() { cout<<"Link System"<<endl; } void Facade::Compile() { CSyntaxParser syntaxParser; CGenMidCode genMidCode; CGenAssemblyCode genAssemblyCode; CLinkSystem linkSystem; syntaxParser.SyntaxParser(); genMidCode.GenMidCode(); genAssemblyCode.GenAssemblyCode(); linkSystem.LinkSystem(); } ////////////////////////////////////////////////////////////////////////// void FacadePattern_Test() { Facade facade; facade.Compile(); } }
客户端
#include "FacadePattern.h" #include <iostream> using namespace std; using namespace FacadePattern; void main() { FacadePattern_Test(); }
运行结果