SubSystem:实现子系统具体的功能;处理由Facade对象指派的任务;但是,SubSystem没有Facade的任何相关信息,也就是说,没有指向Facade的指针。
Client通过发送请求给Facade的方式与子系统进行通信,而不直接与子系统打交道,Facade将这些消息转发给适当的子系统对象。尽管是子系统中的有关对象在做实际工作,但Facade模式本身也必须将它的接口转换成子系统的接口,这里是不是有点适配器模式的感觉呢?这就是学习结构型设计模式的感觉,感觉都很相似,但是仔细的去研究时,就会发现各自的用处。
代码实现
这里实现的代码就是参照我上面举的编译器的例子。
复制代码
/*
** FileName : FacadePatternDemo
** Author : Jelly Young
** Date : 2014/1/2
** Description : More information, please go to http://www.easck.com/> */
#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;










