文档章节

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

奋斗到天明
 奋斗到天明
发布于 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

没有更多内容

加载失败,请刷新页面

加载更多

js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
31
0
MYSQL索引

索引的作用 索引类似书籍目录,查找数据,先查找目录,定位页码 性能影响 索引能大大减少查询数据时需要扫描的数据量,提高查询速度, 避免排序和使用临时表 将随机I/O变顺序I/O 降低写速度,占用磁...

关元
昨天
14
0
撬动世界的支点——《引爆点》读书笔记2900字优秀范文

撬动世界的支点——《引爆点》读书笔记2900字优秀范文: 作者:挽弓如月。因为加入火种协会的读书活动,最近我连续阅读了两本论述流行的大作,格拉德威尔的《引爆点》和乔纳伯杰的《疯传》。...

原创小博客
昨天
35
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部