给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子
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);
}
}
本文介绍了解释器模式的实际应用,通过定义语言文法及其解释器,实现将数字转换为大小写字母的功能。提供了AbstractExpression接口作为解释操作的基础,并通过LowerCaseExpression和UpperCaseExpression类实现了具体的解释逻辑。
842

被折叠的 条评论
为什么被折叠?



