解释器模式(interpreter):给定一个语言,定义一个它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
下面是解释器模式的UML图:
下面是C++描述的代码:
/*
* Copyright (c) 2018 initm.com All rights reserved.
* 作者: Stupid
* 描述: 解释器模式
* 完成时间: 2018-1-14 21:01
*/
#include <QCoreApplication>
#include <iostream>
#include <cstdlib>
#include <string>
#include <list>
class Context{
private:
std::string input;
std::string output;
public:
std::string getInput() const{
return input;
}
void setInput(const std::string &value){
this->input = value;
}
std::string getOutput() const{
return output;
}
void setOutput(const std::string &value){
this->output = value;
}
};
class AbstractExpression{
public:
virtual void Interpret(Context*) = 0;
};
class TerminalExpression: public AbstractExpression{
public:
void Interpret(Context*)override final{
std::cout << "终端解释器" << std::endl;
}
};
class NonterminalExpreesion: public AbstractExpression{
public:
void Interpret(Context*){
std::cout << "非终端解释器" << std::endl;
}
};
int main(int argc, char *argv[])
{
system("chcp 65001");
QCoreApplication a(argc, argv);
Context* context = new Context();
std::list<AbstractExpression*> list;
list.push_back(new TerminalExpression());
list.push_back(new NonterminalExpreesion());
list.push_back(new TerminalExpression());
list.push_back(new TerminalExpression());
for (auto index: list){
index->Interpret(context);
}
return a.exec();
}