妙博客

主机评测 香港服务器 洛杉矶VPS测评

设计模式-JAVA-解释器模式(Interpreter)

解释器模式是一种行为型设计模式,它定义了一种语言的文法,并且定义了一个解释器来解释这种语言中的语句。

在解释器模式中,我们定义了一个抽象的表达式类,它包含了一个解释方法,这个方法接收一个上下文对象作为参数,然后根据上下文对象中的信息来解释表达式。

具体的表达式类继承自抽象表达式类,实现了解释方法。在解释方法中,我们可以根据上下文对象中的信息来解释表达式,然后返回解释结果。

上下文对象包含了解释器需要的信息,它可以是一个简单的键值对,也可以是一个复杂的对象。在解释器模式中,我们可以通过修改上下文对象来改变解释器的行为。

下面是一个简单的解释器模式的示例代码:

// 抽象表达式类
abstract class Expression {
    public abstract int interpret(Context context);
}
// 数字表达式类
class NumberExpression extends Expression {
    private int number;
    public NumberExpression(int number) {
        this.number = number;
    }
    public int interpret(Context context) {
        return number;
    }
}
// 加法表达式类
class AddExpression extends Expression {
    private Expression left;
    private Expression right;
    public AddExpression(Expression left, Expression right) {
        this.left = left;
        this.right = right;
    }
    public int interpret(Context context) {
        return left.interpret(context) + right.interpret(context);
    }
}
// 上下文类
class Context {
    private Map<String, Integer> variables = new HashMap<>();
    public void setVariable(String name, int value) {
        variables.put(name, value);
    }
    public int getVariable(String name) {
        return variables.get(name);
    }
}
// 客户端代码
public class InterpreterDemo {
    public static void main(String[] args) {
        Context context = new Context();
        context.setVariable("a", 10);
        context.setVariable("b", 20);
        Expression expression = new AddExpression(
            new NumberExpression(context.getVariable("a")),
            new NumberExpression(context.getVariable("b"))
        );
        int result = expression.interpret(context);
        System.out.println(result);
    }
}


在上面的示例代码中,我们定义了一个抽象表达式类和两个具体的表达式类,分别表示数字和加法表达式。我们还定义了一个上下文类,它包含了一个变量表,用于存储变量的值。


在客户端代码中,我们创建了一个上下文对象,并设置了两个变量的值。然后我们创建了一个加法表达式,它包含了两个数字表达式。最后,我们调用加法表达式的解释方法,传入上下文对象,得到了加法表达式的结果。


JAVA7大原则和23种设计模式汇总,点我查看

Copyright Your 142132.com Rights Reserved. 赣ICP备17010829号-2