解释器模式(Java)

下面是关于我所写的所有设计模式代码(还是建议自己手打或者想一个别的例子练习一次)
(https://github.com/lihang212010/DesignPatterns-/tree/master/designpatterns/src)

解释器模式一般就是用于创造变成语言了什么的,一般使用不多,类似于易语言,它是将中文字符翻译成为C语言后,C 语言在编译运行的一种披着中文的C 语言,这个过程就大量使用了解释器模式

本次例子是一个将java部分语言转化为python的小程序(其实就2句)
我们知道java的输出是"System.out.println()" ,python的是“print()”
java 的方法是void,python是def
例子如下在这里我解释器外的全局信息只是告诉大家有这一个额外全局信息的写法,并没有实际作用解释器模式(Java)_第1张图片

解释器外全局信息

public class Context {  
private String name;
public void setName(String name) {
	this.name = name;
}
public String getName() {
	return name;
}
}

解释器接口

public interface AbstractExpression {
void  explain(Context context);    //将java转化为Python的方法

}

解释器1

public class Expression1 implements AbstractExpression {

	@Override
	public void explain(Context context) {
	System.out.println("print()");   //转化java输出语句
	}
}

解释器2

public class Expression2 implements AbstractExpression {

	@Override
	public void explain(Context context) {
		System.out.println("def ");   //转化定义方法语句
	}

}

主方法

public class Main {

	public static void main(String[] args) {
		Context context=new Context();   
		AbstractExpression a;        
		String java1="void";    //2个测试数据
		String java2="System.out.println()";
   if (java1.equals("void")) {      //测试转换void
	         a=new Expression2();
	         a.explain(context);
   }
   if(java2.equals("System.out.println()")) { //测试转换输出
	   a=new Expression1();
	   a.explain(context);
   }

	}
}

结果
在这里插入图片描述
是的,如果需要解释10个地方需要10个解释器子类和客户端有10个判断条件,写个编程语言就是这么不容易。这个设计模式用的偏少,切一旦用到基本都是大佬我就不多说了,了解即可

你可能感兴趣的:(设计模式)