Design Pattern Interpreter 解析者模式
2014-07-25 17:02
204 查看
解析者本身是一个很大的设计模式,重点在于设计这个解析者本身,但是由于解析者本身很难设计,故此完善的解析者模式比较少应用,但是这个设计模式本身的思想却不难。
下面简单实用C++实现一下解析者模式,使用不同的解析者,那么就会对于同样的内容解析出不同的结果。
运行结果对同一个字符串ABCDEFG,使用不同的解析者得到不同的结果:
可以说C\C++编译器就是利用这个设计模式写出来的。完善实现这样的解析器当然是很难的。
下面简单实用C++实现一下解析者模式,使用不同的解析者,那么就会对于同样的内容解析出不同的结果。
#include <stdio.h> #include <string> using namespace std; class Context { public: string cmd; void setContext(string s) { cmd = s; } }; class InterpreterBase { protected: Context *context; public: InterpreterBase(Context *c) : context(c) {} //不在后面写=0会出现无法解析外部命令错误的virtual void interpret(); virtual void interpret() = 0; }; class InterpreterIncre:public InterpreterBase { public: InterpreterIncre(Context *c) : InterpreterBase(c) {} void interpret() { string cmd = context->cmd; for (int i = 0; i < (int)cmd.size(); i++) { putchar(cmd[i]+1); } putchar('\n'); } }; class InterpreterDecre:public InterpreterBase { public: InterpreterDecre(Context *c) : InterpreterBase(c) {} void interpret() { string cmd = context->cmd; for (int i = 0; i < (int)cmd.size(); i++) { putchar(cmd[i]-1); } putchar('\n'); } }; int main() { Context context; context.setContext("ABCDEFG"); InterpreterDecre decre(&context); InterpreterIncre incre(&context); decre.interpret(); incre.interpret(); return 0; }
运行结果对同一个字符串ABCDEFG,使用不同的解析者得到不同的结果:
可以说C\C++编译器就是利用这个设计模式写出来的。完善实现这样的解析器当然是很难的。
相关文章推荐
- The Singleton of Design Pattern单态模式
- DESIGN PATTERN LEARNING(设计模式之学习总结)
- 《Head First Design Patterns》笔记四:工厂模式(Factory Pattern)
- 《Head First Design Patterns》笔记九:模版模式(Template Method Pattern)
- 《Head First Design Patterns》笔记八:外观模式(Facade Pattern)
- 设计模式学习(1)——Design Pattern List
- Design Pattern Framework 4.0 C# 设计模式 ef4,sliverlight4 N层项目
- 《Head First Design Patterns》笔记三:装饰者模式(Decorator Pattern)
- 《Head First Design Patterns》笔记二:观察者模式(Observer Pattern)
- Template Method Design Pattern - 模板方法设计模式
- 《Head First Design Patterns》笔记一:策略模式(Strategy Pattern)
- 《设计模式--基于C#的工程化实现及扩展》 Security Design Pattern 系列 3 检查点模式(Check Point)
- 《设计模式--基于C#的工程化实现及扩展》 Security Design Pattern 系列 3 检查点模式(Check Point)
- 原型设计模式(Prototype Design Pattern)
- 《设计模式--基于C#的工程化实现及扩展》 Security Design Pattern 系列 1 公钥体系与分布式环境要求
- [创建型模式系列]Abstract factory of Design Pattern模式设计之抽象工厂模式
- 《设计模式--基于C#的工程化实现及扩展》 Security Design Pattern 系列 3 检查点模式(Check Point)
- 《设计模式——基于C#的工程化实现及扩展》 Security Design Pattern 系列 4 角色模式(Role Pattern)
- 《Head First Design Patterns》笔记六:命令模式(Command Pattern)
- 单实例类设计模式[Singleton Design Pattern]