文档章节

行为型模式之八:解释器模式

奋斗到天明
 奋斗到天明
发布于 2015/08/27 17:43
字数 222
阅读 16
收藏 0

解释器模式在有些环境需要解释的时候使用,下面例子是一个非常小的解释器模式实现,是将a,b字母转换成1,2

类图

 

注意:为了使结构更可读,依赖关系也在类图中显示。

Java代码

class Context { 
  private String input; 
  private String output; 
 
  public Context(String input) { 
    this.input = input; 
    this.output = "";
  } 
 
  public String getInput() { 
    return input; 
  } 
  public void setInput(String input) { 
    this.input = input; 
  } 
  public String getOutput() { 
    return output; 
  } 
  public void setOutput(String output) { 
    this.output = output; 
  } 
}
 
abstract class Expression {  
  public abstract void interpret(Context context); 
}
 
class AExpression extends Expression { 
  public void interpret(Context context) { 
    System.out.println("a expression"); 
    String input = context.getInput(); 
 
    context.setInput(input.substring(1)); 
    context.setOutput(context.getOutput()+ "1"); 
  } 
 
}
 
class BExpression extends Expression { 
  public void interpret(Context context) { 
    System.out.println("b expression"); 
    String input = context.getInput(); 
 
    context.setInput(input.substring(1)); 
    context.setOutput(context.getOutput()+ "2"); 
  } 
}
 
public class TestInterpreter {
  public static void main(String[] args) { 
    String str = "ab"; 
    Context context = new Context(str); 
 
    List list = new ArrayList(); 
    list.add(new AExpression()); 
    list.add(new BExpression()); 
 
    for(Expression ex : list) { 
      ex.interpret(context); 
    } 
 
    System.out.println(context.getOutput()); 
  } 
}

解释器模式在JDK中使用

java.util.pattern

© 著作权归作者所有

共有 人打赏支持
奋斗到天明
粉丝 18
博文 112
码字总数 82707
作品 0
昌平
程序员
小菜学设计模式——设计模式总结之行为型(2)

1、设计模式总结 设计模式总共23个,但是常用的不到10个,下面就把这23个设计模式进行整理归类,具体如下: 1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型...

learn_more
2015/07/10
137
0
一句话总结23种设计模式则

1. 前言 断断续续写了一段时间的设计模式,终于把经典的23种设计模式全写完了。下面对这些设计模式总结一下。 2. 设计原则 设计原则的介绍 : 设计模式的六大原则 即使我们之前没有专门看过这...

四月葡萄
01/05
0
0
PHP之设计模型分类(一)

经典的《设计模式》一书归纳出23种设计模式,本文按《易学设计模式》一书归纳分类如下: 1.创建型模式 前面讲过,社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和对象...

peasant
2016/04/29
81
0
设计模式-创建-singleton(单例)模式

单例模式是一种创建型的模式,适用于 全局只有一个对象的类, 结构图 只有一个静态 实例变量 和一个静态 函数 外部通过Instance() 静态函数来获取 唯一实例 存在的问题: 线程安全性 可用dou...

梦想游戏人
2016/04/28
45
0
java 常用23中设计模式

Java总共有23中常见的设计模式。它们主要可以分为3类,创建型,结构型以及行为型。 创建型的设计模式有: 一、Singleton,单例模式:保证一个类只有一个实例,并提供一个唯一的全局访问点。 ...

菜头_
2016/01/19
86
1

没有更多内容

加载失败,请刷新页面

加载更多

Python深体验,常见的数据处理方式(必须要懂的)

1.缺失值处理 - 拉格朗日插值法 input_file数据文件内容(存在部分缺失值): from scipy.interpolate import lagrangeimport pandas as pdimport numpy as npinput_file = './dat...

无也Python
24分钟前
2
0
Spring MVC注解故障追踪记

Spring MVC是美团点评很多团队使用的Web框架。在基于Spring MVC的项目里,注解的使用几乎遍布在项目中的各个模块,有Java提供的注解,如:@Override、@Deprecated等;也有Spring提供的注解,...

Skqing
25分钟前
4
0
区块链入门教程以太坊源码分析cmd包分析

  兄弟连区块链入门教程以太坊源码分析cmd包分析。 ### cmd包概述 * geth 主要Ethereum CLI客户端。它是Ethereum网络(eth主网,测试网络或私有网)的入口点,使用此命令可以使节点作为ful...

兄弟连区块链入门教程
27分钟前
1
0
@Autowired 报红线

代码可正常跑,不过红线看着有点难受,解决方案 使用@Autowired(required=false) 或者@Resource. 这两者区别网上一大堆

斩神魂
33分钟前
1
0
DataTable中检索信息 (C#)

C#_从DataTable中检索信息 存在于内存中的虚拟表DataTable,绑定在数据显示控件后,如果想在再检索其中某些信息,可以利用DataTable.Select方法进行检索,避免了重复的读取数据库。Select方法...

CS-CS01
40分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部