解释器模式提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。
解释器模式主要包括以下几个部分:
解释器模式的实现:
假设你现在要买一台联想的16寸的电脑,其他品牌和尺寸的不考虑。我们现在使用解释器模式来表达它。
1. 抽象表达式接口
//抽象表达式接口
public interface Expression {
public boolean interpret(String context);
}
2. 终结符表达式
//终结符表达式
public class TerminalExpression implements Expression {
private String message;
public TerminalExpression(String message){
this.message = message;
}
@Override
public boolean interpret(String context) {
if(context.equals(message)){
return true;
}else{
return false;
}
}
}
3. 非终结符表达式
public class AndExpression implements Expression {
private Expression brand = null;
private Expression size = null;
public AndExpression(Expression brand, Expression size) {
this.brand = brand;
this.size = size;
}
@Override
public boolean interpret(String context) {
String[] info = context.split(" ");
return brand.interpret(info[0]) && size.interpret(info[1]); //当品牌和尺寸都满足的时候才买
}
}
4. 环境角色
//上下文环境类
public class Context {
private String brand = "联想";
private String size = "16寸";
private Expression expression = null;
public Context(){
Expression brand = new TerminalExpression(this.brand);
Expression size = new TerminalExpression(this.size);
expression = new AndExpression(brand,size);
}
public void result(String context){
boolean target = expression.interpret(context);
if(target){
System.out.println(context + ":是我想要的电脑,买了");
}else{
System.out.println(context + ": 不满足我的要求");
}
}
}
5. 客户端
public class InterpretMain {
public static void main(String[] args) {
Context context = new Context();
context.result("戴尔 13寸");
context.result("华硕 16寸");
context.result("联想 13寸");
context.result("联想 16寸");
}
}
创建型模式
结构型模型
行为型模式
下一节:
命令模式:【每天一个java设计模式(十五)】 - 命令模式
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_43598687/article/details/122089676
内容来源于网络,如有侵权,请联系作者删除!