菜鸟硕枫设计模式系列之16 解释器模式

本文介绍了解释器模式这一行为设计模式,通过构建语法树并按语法规则解释执行。提供了具体的Java实现示例,包括加法器、减法器及测试过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解释器模式是一种行为模式。主要方法就是形成一个解释语法树,然后根据语法树中的语法规则执行每一个语法字句即可。

解释器模式类图:
[img]http://dl.iteye.com/upload/attachment/364678/71a278dd-fb56-3c94-93fd-3a7137b9ad9b.jpg[/img]

说明:这个类图只是demo的类图示例,真正的解释器还包括测试类中的语法树,然后根据不同的解释器去对context内容进行解释执行。

具体代码示例:

解释器接口:

package interpreterPattern;

public interface Interpreter {

void interpret(Context context);
}


加法器


package interpreterPattern;

public class IncrementInterpreter implements Interpreter{

@Override
public void interpret(Context context) {
int value = Integer.valueOf(context.getValue());
value+=50;
System.out.println("after Increment operation,value="+value);
context.setValue(String.valueOf(value));


}

}


减法器:

package interpreterPattern;

public class DecrementInterpreter implements Interpreter{

@Override
public void interpret(Context context) {
int value = Integer.valueOf(context.getValue());
value-=10;
System.out.println("after Decrement operation,value="+value);
context.setValue(String.valueOf(value));

}

}


上下文环境:

package interpreterPattern;

public class Context {

private String value;

public void setValue(String value) {
this.value = value;
}

public String getValue() {
return value;
}
}


测试类:

package interpreterPattern;

import java.util.ArrayList;
import java.util.List;

public class IntepreterTest {

public static void main(String[]args){
Context context = new Context();
context.setValue("12345");

List<Interpreter> list = new ArrayList<Interpreter>();
//形成语法树
for(int i =0;i<10;i++)
{
if(i%3==0)
list.add(new DecrementInterpreter());
else
list.add(new IncrementInterpreter());

}
//解释执行
for(Interpreter interpreter :list){
interpreter.interpret(context);
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值