您的位置:首页 > 编程语言 > Java开发

[译]Java设计模式之解释器

2015-01-09 23:49 246 查看
(文章翻译自Java Design Pattern: Interpreter)

解释器模式适用于当一些内容需要翻译的时候。下面的例子是一个非常简单的解释器实现。它将字母"a"和"b"翻译成"1"和"2"。

类图:



注意:为了使结构更加清晰依赖关系也在图中显示出来了。

Java 代码

class Context {

private String input;
private String output;

public Context(String input) {
this.input = input;
this.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;
}
}

abstract class Expression {
public abstract void interpret(Context context);
}

class AExpression extends Expression {
public void interpret(Context context) {
System.out.println("a expression");
String input = context.getInput();

context.setInput(input.substring(1));
context.setOutput(context.getOutput()+ "1");
}

}

class BExpression extends Expression {
public void interpret(Context context) {
System.out.println("b expression");
String input = context.getInput();

context.setInput(input.substring(1));
context.setOutput(context.getOutput()+ "2");
}
}

public class TestInterpreter {
public static void main(String[] args) {
String str = "ab";
Context context = new Context(str);

List<Expression> list = new ArrayList<Expression>();
list.add(new AExpression());
list.add(new BExpression());

for(Expression ex : list) {
ex.interpret(context);

}

System.out.println(context.getOutput());
}
}

在JDK中使用解释器模式:

java.util.Pattern
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: