设计模式java——解释器模式
2023-09-11 14:16:28 时间
解释器模式(interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
解释器模式Demo:
/**
* 2018年4月10日下午9:01:06
*/
package com.Designpattern;
/**
* @author xinwenfeng
*
*/
public class TestInterpreter {
/**
* @param args
*/
public static void main(String[] args) {
// 01 02 03 04 05 06 07 08 09 10
// a b c d e f g h i j
// 11 12 13 14 15 16 17 18 19 20
// k l m n o p q r s t
// 21 22 23 24 25 26
// u v w x y z
WordContext context = new WordContext();
context.setText("U23L15U24L09U08L21L01L14U14L09");
WordExpression expression = null;
UpperWordExpression u = new UpperWordExpression();
LowerWordExpression l = new LowerWordExpression();
while(context.getText().length()>0) {
if("U".equals(context.getText().substring(0, 1))) {
expression = u;
}else {
expression = l;
}
expression.interpret(context);
}
}
}
class WordContext{
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
//解释器
abstract class WordExpression{
public abstract void interpret(WordContext context);
}
class UpperWordExpression extends WordExpression{
@Override
public void interpret(WordContext context) {
String word = context.getText().substring(1,3);//可放父类复用
int num = Integer.parseInt(word);
char returnWord = (char) ('a'+(num -1));
context.setText(context.getText().substring(3));
System.out.print((" "+returnWord).toUpperCase());
}
}
class LowerWordExpression extends WordExpression{
@Override
public void interpret(WordContext context) {
String word = context.getText().substring(1,3);
int num = Integer.parseInt(word);
char returnWord = (char) ('a'+(num -1));
context.setText(context.getText().substring(3));
System.out.print(returnWord);
}
}
结果:
相关文章
- java集合(3)- Java中的equals和hashCode方法详解
- Java描述设计模式(20):命令模式
- Java描述设计模式(11):观察者模式
- Java描述设计模式(08):桥接模式
- Java描述设计模式(06):建造者模式
- java反射增加装饰模式的普适性
- JAVA中的观察者模式实例教程
- [转]JAVA设计模式之单例模式
- 设计模式java——桥接模式
- 设计模式java——中介者模式
- 设计模式java——简单工厂模式
- 设计模式java——命令模式
- 34 异常机制 异常体系结构 Java把异常当做对象来处理 并定义一个基类java.lang.Throwable作为所有异常的超类 Error Exception
- 【Java萌新】面试常问设计模式——代理模式
- 【Java实习生】面试常问设计模式——单例模式
- 初学Java常用设计模式之——建造者模式
- Java中使用Observer接口和Observable类实践Observer观察者模式
- 在java中使用JMH(Java Microbenchmark Harness)做性能测试
- Java设计模式之行为型:状态模式
- 深入Java设计模式之访问者模式
- java设计模式案例详解:代理模式
- 【JAVA】浅谈java枚举类
- 解决Java使用response下载文件报错,并总结可能出错的原因: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。
- java 设计模式二,策略模式
- Java工厂模式
- 桥梁模式练习:飞机信息系统(JAVA练习项目&IDEA)