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