设计模式简单代码之Facade模式(编译系统篇)
2006-08-17 08:26
381 查看
/**********************************************************************************************************/
* 作者:一雨田(http://blog.csdn.net/dylgsy/)。本文可随便转贴,但请保留此信息
* Facade 模式:
* 门面模式,为外界提供一个统一的、简单的接口,以便客户程序能非常方便的使用。把复杂的处理过程隐藏起来
* Facade 模式主要是为调用者提供方便,要什么样的接口应该由客户那边去规定。
* Facade 模式有个特点,就是由它包装的接口,在内部都有一些比较混杂的操作(内部是由好多对象协作而完成的)。
* 另外使用Facade模式还可以对熟悉内部操作的用户开放底层的功能。
/**********************************************************************************************************/
/**********************************************************************************************************/
* 实例:
* 这里就使用《设计模式》书里给出的例子吧,这是一个编译器的例子。我们使用编译器,只需要指定源文件的路径和目标
* 文件的路径就可以了,编译器内部所做的事情对我们来说是透明的。
* 编译器内部所做的事情可能有:
* 词法分析、语法分析、语义分析、代码优化、代码生成等,下面我们来模拟
* 这个例子只是为展示Facade 模式,所以编译器的编译过程被简化了
/**********************************************************************************************************/
#include <iostream>
using namespace std;
// 扫描器
class CScanner
{
public:
void Scan(char *lpszInput)
{
cout << "正在扫描文件:" << lpszInput << endl;
}
};
// 分析器
class CParser
{
public:
void Parse(char *lpszInput)
{
cout << "正在分析文件:" << lpszInput << endl;
}
};
// 代码生成器
class CCodeGenerator
{
public:
void CodeGen(char *lpszOutput)
{
cout << "正在生成代码到文件:" << lpszOutput << endl;
}
};
// 提供一个门面(编译器)
class CCompiler
{
public:
void Compile(char *lpszInput, char *lpszOutput)
{
_s.Scan(lpszInput);
_p.Parse(lpszInput);
_c.CodeGen(lpszOutput);
}
private:
CScanner _s;
CParser _p;
CCodeGenerator _c;
};
// 使用编译系统:这个系统包括扫描器、分析器、生成器。并且提供了一个门面接口Compiler
void main()
{
CCompiler compiler;
compiler.Compile("123.cpp", "123.exe");
}
* 作者:一雨田(http://blog.csdn.net/dylgsy/)。本文可随便转贴,但请保留此信息
* Facade 模式:
* 门面模式,为外界提供一个统一的、简单的接口,以便客户程序能非常方便的使用。把复杂的处理过程隐藏起来
* Facade 模式主要是为调用者提供方便,要什么样的接口应该由客户那边去规定。
* Facade 模式有个特点,就是由它包装的接口,在内部都有一些比较混杂的操作(内部是由好多对象协作而完成的)。
* 另外使用Facade模式还可以对熟悉内部操作的用户开放底层的功能。
/**********************************************************************************************************/
/**********************************************************************************************************/
* 实例:
* 这里就使用《设计模式》书里给出的例子吧,这是一个编译器的例子。我们使用编译器,只需要指定源文件的路径和目标
* 文件的路径就可以了,编译器内部所做的事情对我们来说是透明的。
* 编译器内部所做的事情可能有:
* 词法分析、语法分析、语义分析、代码优化、代码生成等,下面我们来模拟
* 这个例子只是为展示Facade 模式,所以编译器的编译过程被简化了
/**********************************************************************************************************/
#include <iostream>
using namespace std;
// 扫描器
class CScanner
{
public:
void Scan(char *lpszInput)
{
cout << "正在扫描文件:" << lpszInput << endl;
}
};
// 分析器
class CParser
{
public:
void Parse(char *lpszInput)
{
cout << "正在分析文件:" << lpszInput << endl;
}
};
// 代码生成器
class CCodeGenerator
{
public:
void CodeGen(char *lpszOutput)
{
cout << "正在生成代码到文件:" << lpszOutput << endl;
}
};
// 提供一个门面(编译器)
class CCompiler
{
public:
void Compile(char *lpszInput, char *lpszOutput)
{
_s.Scan(lpszInput);
_p.Parse(lpszInput);
_c.CodeGen(lpszOutput);
}
private:
CScanner _s;
CParser _p;
CCodeGenerator _c;
};
// 使用编译系统:这个系统包括扫描器、分析器、生成器。并且提供了一个门面接口Compiler
void main()
{
CCompiler compiler;
compiler.Compile("123.cpp", "123.exe");
}
相关文章推荐
- 设计模式简单代码之Facade模式(编译系统篇)
- 设计模式简单代码之Composite模式
- C++代码设计:向Java借鉴Builder模式塈OpenCL内核代码编译
- 设计模式简单代码之Flyweight模式
- 设计模式简单代码之Proxy模式(买房子篇)
- 设计模式简单代码之Flyweight模式
- 设计模式简单代码之prototype模式(画圆篇)
- 模板设计模式,简单Java代码实现
- 装饰者设计模式,简单代码实现
- 请用代码简单描述一下Singleton、抽象工厂、Bridge、Composite(任选三个)的设计模式的概念
- 以简单的设计模式代码阐述如何设计委托
- 设计模式简单代码之Flyweight模式
- 设计模式简单代码之Mediator模式(一)
- 设计模式简单代码之Iterator模式
- 设计模式简单代码之Composite模式(老师分配任务篇)
- 设计模式思路和简单代码实现
- 设计模式与实例代码:Facade模式
- 简单抽象工厂设计模式代码
- PHP简单工厂设计模式,简单代码。(缺点请指正,互相学习)
- 设计模式(1)-使用简单工厂优化代码(转载)