12.解释器模式

简介: 1解释器模式具体描述 解释器模式:给定一个语言后,解释器模式可以定义出其文法的一种表示, 并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。 解释器模式将描述怎样在有了一个简单的文法后,使用模式设计解释这些语句。 在解释器模式里面提到的语言是指任何解释器对象能够解释的任何组合。 在解释器模式中需要定义一个代表文法的命令类的等级结构,

1解释器模式具体描述

解释器模式:给定一个语言后,解释器模式可以定义出其文法的一种表示,

并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。

解释器模式将描述怎样在有了一个简单的文法后,使用模式设计解释这些语句。

在解释器模式里面提到的语言是指任何解释器对象能够解释的任何组合。

在解释器模式中需要定义一个代表文法的命令类的等级结构,

也就是一系列的组合规则。每一个命令对象都有一个解释方法,

代表对命令对象的解释。命令对象的等级结构中的对象的任何排列组合都是一个语言。

 

俺有一个《泡MM真经》,上面有各种泡MM的攻略,比如说去吃西餐的步骤、

去看电影的方法等等,跟MM约会时,只要做一个Interpreter

照着上面的脚本执行就可以了。

4.观察者模式类图

5.代码:

#include<iostream>

#include <list>

#include <string>

using namespace std;

//解释器模式:给定一个语言后,解释器模式可以定义出其文法的一种表示,

//并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。

//解释器模式将描述怎样在有了一个简单的文法后,使用模式设计解释这些语句。

//在解释器模式里面提到的语言是指任何解释器对象能够解释的任何组合。

//在解释器模式中需要定义一个代表文法的命令类的等级结构,

//也就是一系列的组合规则。每一个命令对象都有一个解释方法,

//代表对命令对象的解释。命令对象的等级结构中的对象的任何排列组合都是一个语言。

//

//俺有一个《泡MM真经》,上面有各种泡MM的攻略,比如说去吃西餐的步骤、

//去看电影的方法等等,跟MM约会时,只要做一个Interpreter

//照着上面的脚本执行就可以了。

 

class Context;

 

class AbstractExpression

{

public:

    virtual void interpret(Context *) = 0;

};

 

class TerminalExpression :public AbstractExpression

{

public:

    void interpret(Context *context)

    {

        cout << "终端解释器" << endl;

    }

};

 

class NonterminalExpression :public AbstractExpression

{

public:

    void interpret(Context *context)

    {

        cout << "非终端解释器" << endl;

    }

};

 

class Context

{

public:

    string input, output;

};

 

int main()

{

    Context *context = new Context();

    list<AbstractExpression*>  lt;

    lt.push_back(new TerminalExpression());

    lt.push_back(new NonterminalExpression());

    lt.push_back(new TerminalExpression());

    lt.push_back(new TerminalExpression());

 

    for (list<AbstractExpression*>::iterator iter = lt.begin(); iter != lt.end(); iter++)

    {

        (*iter)->interpret(context);

    }

 

    cin.get();

    return 0;

}

运行结果如下:


目录
相关文章
|
1月前
|
设计模式
【设计模式】解释器模式
【设计模式】解释器模式
|
3月前
|
设计模式 监控 Java
聊聊Java设计模式-解释器模式
解释器模式(Interpreter Design Pattern)指给定一个“语言”,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。这里所指的“语言”是指使用规定格式和语法的代码。
36 4
聊聊Java设计模式-解释器模式
|
4月前
|
设计模式 SQL 自然语言处理
行为型 解释器模式
行为型 解释器模式
25 0
|
4月前
|
设计模式 SQL 应用服务中间件
设计模式之解释器模式
设计模式之解释器模式
|
6月前
|
设计模式 SQL Java
设计模式~解释器模式(Interpreter)-19
解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。 目录 (1)优点: (2)缺点: (3)使用场景: (4)注意事项: (5)应用实例: 代码
33 0
|
11月前
|
设计模式 消息中间件 Java
一起来学设计模式之解释器模式
前言 目前正在出一个设计模式专题系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~ 本节给大家讲一下设计模式中的解释器模式,并结合实际业务场景给大家讲解如何使用~ 本专题的所有案例代码主要以Java语言为主, 好了, 废话不多说直接开整吧~ 解释器模式 解释器模式(Interpreter Pattern)是一种行为型设计模式,它定义了一种语言的语法表示,并定义了一个解释器来解释这种语言中的表达式。通过使用解释器模式,可以轻松地扩展和修改语言的语法,从而使其更加灵活。
|
设计模式 Java
Java设计模式 ->解释器模式
Java设计模式 ->解释器模式
64 0
|
XML 设计模式 JSON
设计模式轻松学【二四】解释器模式
在生活中我们往往没听懂别人说的话,需要别人详细的解释一遍,才明白其中的意思。在学习Java的过程中我们不明白某个知识点,也需要有详细的解释才能让我们明白其中的韵味。对于编程语言来说也一样,JDK就是java运行提供的一种解释器,所以解释器模式就是去解析某个东西。
设计模式轻松学【二四】解释器模式
|
设计模式 JavaScript 编译器
我学会了,解释器模式
解释器模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。
73 0
我学会了,解释器模式
|
Java Spring
中介者模式与解释器模式(3)
中介者模式与解释器模式(3)
140 0