文档章节

解释器模式(Interpreter)

Carbenson
 Carbenson
发布于 2015/09/14 10:59
字数 207
阅读 57
收藏 5

一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄。

public interface Expression {
	public int interpret(Context context);
}
public class Plus implements Expression{

	@Override
	public int interpret(Context context) {
		// TODO Auto-generated method stub
		return context.getNum1()+context.getNum2();
	}

}
public class Minus implements Expression{

	@Override
	public int interpret(Context context) {
		// TODO Auto-generated method stub
		return context.getNum1()-context.getNum2();
	}
	
}
public class Context {
	private int num1, num2;

	public int getNum1() {
		return num1;
	}

	public int getNum2() {
		return num2;
	}

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

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

	public Context(int num1, int num2) {
		this.num1 = num1;
		this.num2 = num2;
	}

}

测试类:

/**
 * 解析器模式
 * @author Administrator
 *
 */
public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 计算9+8-7
		int result = new Minus().interpret((new Context(new Plus()  
        .interpret(new Context(9, 8)), 7)));  
		System.out.println(result);  
	}

}

最后输出正确的结果:10

基本就这样,解释器模式用来做各种各样的解释器,如正则表达式等的解释器等等!


本文转载自:http://blog.csdn.net/zhangerqing/article/details/8245537

Carbenson
粉丝 19
博文 271
码字总数 84864
作品 0
广州
程序员
私信 提问
设计模式21——Interpreter设计模式

Interpreter解释器设计模式的定义:给定一个语言,定义其文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 Interpreter解释器设计模式角色如下: (1).抽象表达式...

小米米儿小
2014/01/27
48
0
行为型模式:Interpreter 解释器模式

行为型模式:Interpreter 解释器模式 1、动机(Motivation) 1)在软件构建过程中,如果某一特定领域的问题比较复杂,类似的模式不断重复出现,如果使用普通的编程方式来实现将面临非常频繁...

flyhighly
2011/04/24
67
0
23种设计模式(14):解释器模式

定义:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。 类型:行为类模式 类图: 解释器模式是一个比较少用的模式,本人之前也没有用过这个...

LCZ777
2014/07/09
23
0
解释器(Interpreter)模式

  解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。 解释器模式的结构   ...

小菜鸡1
2016/09/03
20
0
设计模式之解释器模式(行为型)

[TOC] 一、模式定义 解释器模式(Interpreter Pattern):定义语言的文法,并且建立一个解释器来解释改语言中的句子,这里的“语言”意思是规定格式和语法的代码,所以解释器模式是一种类行为型...

smileNicky
04/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一、docker 入坑(win10和Ubuntu 安装)

前言 终究还是绕不过去了,要学的知识真的是太多了,好在我们还有时间,docker 之前只闻其声,不曾真正的接触过,现在docker 越来越火,很多公司也都开始使用了。所以对于我们程序员而言,又...

quellanan2
20分钟前
4
0
AutoCompleteTextView

小技巧按菜单键 当菜单打开之前会调用onMenuOpened(int featereId,Menu menu),可以重写这个方法,弹出对话框或者Popmenu 再布局中添加控件AutoCompleteTextView. <AutoCompleteTextVie...

逆天游云
24分钟前
4
0
谷歌软件商店:推出5美元会员 可用数百个软件

腾讯科技讯,谷歌和苹果是全球两大智能手机操作系统的运营者,两家公司旗下分别拥有占据行业垄断地位的谷歌软件商店和苹果软件商店。据外媒最新消息,手机软件商店的商业模式正在发生一些变化...

linuxCool
46分钟前
3
0
RocketMQ 多副本前置篇:初探raft协议

Raft协议是分布式领域解决一致性的又一著名协议,主要包含Leader选举、日志复制两个部分。 温馨提示: 本文根据raft官方给出的raft动画进行学习,其动画展示地址:http://thesecretlivesofda...

中间件兴趣圈
46分钟前
3
0
elasticsearch 6.8.0 添加认证

1. 修改elasticsearch-6.8.0/config/elasticsearch.yml 最后添加一行:xpack.security.enabled: true 2. 初始化用户和密码 ./bin/elasticsearch-setup-passwords interactive 我这里初始化为......

coord
48分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部