欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > asp.net >内容正文

asp.net

设计模式复习-解释器模式

发布时间:2025/6/17 asp.net 26 豆豆
生活随笔 收集整理的这篇文章主要介绍了 设计模式复习-解释器模式 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

#pragma once #include "stdafx.h" #include<map> #include<set> #include<list> #include<string> #include<iostream> using namespace std;/*设计模式-解释器模式(interpreter)给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表示为一个简单语言中的句子。 这样就可以构建一个解释器,该解释器通过解释这些句子来解决问题(比如正则表达式)。 */class CContext {//解释器之外的一些全局信息 public:string mstrInput;CContext(const string &strInput) {mstrInput = strInput;} };class CAbstractExpression {//抽象解释操作 public:virtual void Interpret(CContext *pContext) = 0; };class ExpressionA : public CAbstractExpression {//表达式A public:void Interpret(CContext *pContext) {cout << "ExpressionA:" << pContext->mstrInput << endl;} };class ExpressionB : public CAbstractExpression {//表达式B public:void Interpret(CContext *pContext) {cout << "ExpressionB:" << pContext->mstrInput << endl;} };int main() {list<CAbstractExpression*>lstWork;lstWork.clear();lstWork.push_back(new ExpressionA());lstWork.push_back(new ExpressionB());lstWork.push_back(new ExpressionA());lstWork.push_back(new ExpressionB());CContext *pContext = new CContext("test");for each(CAbstractExpression * index in lstWork) {index->Interpret(pContext);delete index;}delete pContext;getchar();return 0; }

总结

以上是生活随笔为你收集整理的设计模式复习-解释器模式的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。