文档章节

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

奋斗到天明
 奋斗到天明
发布于 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
java 常用23中设计模式

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

菜头_
2016/01/19
86
1
设计模式-创建-singleton(单例)模式

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

梦想游戏人
2016/04/28
45
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

c语言之内存分配笔记

先看一个数组: short array[5] = {1,2} // 这儿定义的一个int类型的数组,数组第1和第2个元素值是1和2.其余后面默认会给值为0; 或者 short array[] = {1,2};//这儿数组第1和第2个元素,数组...

DannyCoder
今天
2
0
Shell | linux安装包不用选择Y/N的方法

apt-get install -y packageOR echo "y" | sudo apt-get install package

云迹
今天
2
0
Hadoop的大数据生态圈

基于Hadoop的大数据的产品圈 大数据产品的一句话概括 Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架...

zimingforever
今天
5
0
八大包装类型的equals方法

先看其中一个源码 结论:八大包装类型的equals方法都是先判断类型是否相同,不相同则是false,相同则判断值是否相等 注意:包装类型不能直接用==来等值比较,否则编译报错,但是数值的基本类型...

xuklc
今天
2
0
NoSQL , Memcached介绍

什么是NoSQL 非关系型数据库就是NoSQL,关系型数据库代表MySQL 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗...

TaoXu
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部