首页 > 代码库 > 解释器模式

解释器模式

1,现在很多杀毒软件,采用了解释器模式,就减速升级的次数,从而提高了用户体验了,当有一种新的病毒的时候不需要升级客户端,而是服务器直接发送命令(命令模式),然后客户端进行解析命令,就用到了解释器模式,还有我们的编译器也是这种模式

2,代码

// 解释器模式.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <list>


using namespace std;

//上下文
class Context;


//解释器的接口
class AbstractExpression{
public:
	virtual void interpret(Context *) = 0;
};


//解释器的具体实现类,通过传入的上下文context 进行解释
class TerminalExpression :public AbstractExpression{
public:
	void interpret(Context *c){
		cout << "terminal expression" << endl;
	}
};


//解释器的具体实现类
class NoteterminalExpression:public AbstractExpression
{
public:
	void interpret(Context *c){
		cout << "NoteterminalExpression " << endl;
	}
};


class Context{
public:
	string input, output;
};


int _tmain(int argc, _TCHAR* argv[])
{
	Context *context = new Context();
	list<AbstractExpression *> lst;

	lst.push_back(new TerminalExpression());
	lst.push_back(new NoteterminalExpression());
	lst.push_back(new TerminalExpression());
	lst.push_back(new TerminalExpression());


	for (list<AbstractExpression*>::iterator iter = lst.begin(); iter != lst.end(); iter++){
		(*iter)->interpret(context);
	}
	
	cin.get();
	return 0;
}


解释器模式