设计模式之解释器模式

  1. 简单梳理解释器模式
    1. 解释器模式的实现
      1. 定义业务方法
      2. 执行结果
      3. 结果分析
  2. 联系作者
    1. 微信公众号
    2. QQ群

简单梳理解释器模式

解释器模式的实现

首先我们定义个Context类,用来保存一些解释器之外的全局信息

//包含解释器之外的一些全局信息
public class Context {
    private String input;
    private String output;

    public String getInput() {
        return input;
    }

    public void setInput(String input) {
        this.input = input;
    }

    public String getOutput() {
        return output;
    }

    public void setOutput(String output) {
        this.output = output;
    }
}

再定义一个抽象表达式的基类

//抽象表达式
public abstract class AbstractExpression {
    public abstract void Interpret(Context context);
}

定义两个具体实现类

public class TerminalExpression extends AbstractExpression{
    @Override
    public void Interpret(Context context) {
        System.out.println("终端解释器");
    }
}
public class NonterminalExpression extends AbstractExpression{
    @Override
    public void Interpret(Context context) {
        System.out.println("非终端解释器");
    }
}

这样我们前期的定义就算做完了,
然后我们看具体应用中的使用。

定义业务方法

看在具体业务逻辑中如何使用

public class InterpreterTest {
    public static void main(String[] args) {
        //解释器模式
        func1();
    }

    public static void func1(){
        Context context = new Context();
        List<AbstractExpression> list = new ArrayList<>();
        list.add(new TerminalExpression());
        list.add(new NonterminalExpression());
        list.add(new TerminalExpression());
        list.add(new TerminalExpression());

        for(AbstractExpression ae: list){
            ae.Interpret(context);
        }
    }
}

执行结果

终端解释器
非终端解释器
终端解释器
终端解释器

结果分析

解释器模式,给定一个语言,定义它文法的一种表示,并定义一个解释器,
这个解释器使用该表示来解释语言中的句子。

解释器模式的优点:可以很容易的改变和扩展文法。
因为该模式使用类来表示文法规则,可以使用继承来改变和扩展文法规则。

当然,解释器模式也有不足之处,因为每一个文法规则至少需要定义一个类,
因此包含许多规则的文法可能会难以维护。

联系作者

微信公众号

xiaomingxiaola
(BossLiu)

QQ群

58726094


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 384276224@qq.com

×

喜欢就点赞,疼爱就打赏

日记本 网文世界