欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java设计模式菜鸟系列(二十)解释器模式建模与实现

程序员文章站 2022-05-01 10:33:50
...

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40019829

 

 

解释器模式(Interpreter):它定义了对象与对象之间进行某种操作之后会得到什么值。一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄。

一、uml建模:

Java设计模式菜鸟系列(二十)解释器模式建模与实现
            
    
    博客分类: Java设计模式菜鸟系列  

 

二、代码实现

 

/**
 * 解释器模式(Interpreter):它定义了对象与对象之间进行某种操作之后会得到什么值。
 * 
 * 一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄。
 * 
 * 示例:先定义一个实体类,封装两个变量num1、num2
 */
class Entity {
	private double num1;
	private double num2;

	public Entity(double num1, double num2) {
		this.num1 = num1;
		this.num2 = num2;
	}

	public double getNum1() {
		return num1;
	}

	public void setNum1(double num1) {
		this.num1 = num1;
	}

	public double getNum2() {
		return num2;
	}

	public void setNum2(double num2) {
		this.num2 = num2;
	}
}

/**
 * 运算接口
 */
interface Operatable {
	public double interpreter(Entity entity);
}

/**
 * 加法运算
 */
class AddOperation implements Operatable {

	@Override
	public double interpreter(Entity entity) {
		return entity.getNum1() + entity.getNum2();
	}
}

/**
 * 减法运算
 */
class MinusOperation implements Operatable {

	@Override
	public double interpreter(Entity entity) {
		return entity.getNum1() - entity.getNum2();
	}
}

/**
 * 客户端测试类
 * 
 * @author Leo
 */
public class Test {
	public static void main(String[] args) {
		/**
		 * 创建加法、减法运算
		 */
		AddOperation addOperation = new AddOperation();
		MinusOperation minusOperation = new MinusOperation();
		/**
		 * 一、分步运算
		 */
		double addResult = addOperation.interpreter(new Entity(20, 30));
		double minusResult = minusOperation.interpreter(new Entity(20, 30));
		System.out.println("addResult = " + addResult);
		System.out.println("minusResult = " + minusResult);
		/**
		 * 二、混合运算
		 */
		double mixResult = new AddOperation().interpreter(new Entity(
				addOperation.interpreter(new Entity(20, 30)), minusOperation
						.interpreter(new Entity(40, 50))));
		System.out.println("mixResult = " + mixResult);
	}
}

 

 

三、总结

 

解释器模式用来做各种各样的解释器,如正则表达式的解释器等等。