行为型模式之八:解释器模式
行为型模式之八:解释器模式
刀狂剑痴 发表于2年前
行为型模式之八:解释器模式
  • 发表于 2年前
  • 阅读 13
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

解释器模式在有些环境需要解释的时候使用,下面例子是一个非常小的解释器模式实现,是将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 list = new ArrayList(); 
    list.add(new AExpression()); 
    list.add(new BExpression()); 
 
    for(Expression ex : list) { 
      ex.interpret(context); 
    } 
 
    System.out.println(context.getOutput()); 
  } 
}

解释器模式在JDK中使用

java.util.pattern

共有 人打赏支持
粉丝 18
博文 111
码字总数 82582
×
刀狂剑痴
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: