给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子
AbstractExpression.java
package com.gary.designpattern.interpreter;
/**
* 解释操作接口
* @author gary
*
*/
public interface AbstractExpression {
public void interpret(int data);
}
LowerCaseExpression.java
package com.gary.designpattern.interpreter;
/**
* 将数字解释成小写字母
* @author gary
*
*/
public class LowerCaseExpression implements AbstractExpression {
@Override
public void interpret(int data) {
System.out.println(Util.int2String(data, 49));
}
}
UpperCaseExpression.java
package com.gary.designpattern.interpreter;
/**
* 将数字解释成大写字母
* @author gary
*
*/
public class UpperCaseExpression implements AbstractExpression {
@Override
public void interpret(int data) {
System.out.println(Util.int2String(data, 17));
}
}
Util.java
package com.gary.designpattern.interpreter;
public class Util {
public static String int2String(int data, int add){
StringBuffer sb = new StringBuffer();
byte[] bytes = String.valueOf(data).getBytes();
for (byte b : bytes) {
sb.append((char)(b + add));
}
return sb.toString();
}
}
Test.java
package com.gary.designpattern.interpreter;
/**
* 测试
* @author gary
*
*/
public class Test {
public static void main(String[] args) {
int data = 543210;
AbstractExpression upper = new UpperCaseExpression();
AbstractExpression lower = new LowerCaseExpression();
upper.interpret(data);
lower.interpret(data);
}
}