设计模式java——解释器模式

解释器模式(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);
	}
	
}

结果:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值