文档章节

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

奋斗到天明
 奋斗到天明
发布于 2015/08/27 17:43
字数 222
阅读 16
收藏 0
点赞 0
评论 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 ⋅ 0

一句话总结23种设计模式则

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

四月葡萄 ⋅ 01/05 ⋅ 0

PHP之设计模型分类(一)

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

peasant ⋅ 2016/04/29 ⋅ 0

设计模式-创建-singleton(单例)模式

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

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

java 常用23中设计模式

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

菜头_ ⋅ 2016/01/19 ⋅ 1

php 常用的设计模式

红色标记的比较常用。 设计模式主要分三个类型:创建型、结构型和行为型。 其中创建型有: 一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点 二、Abstract Fa...

大灰狼wow ⋅ 2014/05/17 ⋅ 1

Android 架构师之路12 设计模式之解释器模式

Android 架构师之路 目录 1、解释器模式概念 1.1 介绍 解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释...

香沙小熊 ⋅ 01/29 ⋅ 0

PHP的23种设计模式--php_design_patterns

学习理解设计模式,记录PHP关于23种设计模式的简单Demo。 设计模式分为:创建型模式, 结构型模式,行为型模式等23种设计模式。 一、五种创建型模式如下: 工厂方法模式factorymethod 抽象工...

匿名 ⋅ 2016/04/13 ⋅ 1

为什么要开始学习设计模式

Q: 为什么想总结一下每一个设计模式: 写了这么久程序了,不同的设计模式也见过不少,有的还比较了解,有的就几乎不认识, 所以一方面出于提高自己的实际能力,另一方面也是为了在提高自己的...

小翼Eric ⋅ 2015/07/06 ⋅ 0

设计模式之美:Behavioral Patterns(行为型模式)

行为型模式涉及到算法和对象间职责的分配。 行为模式不仅描述对象或类的模式,还描述它们之间的通信模式。 这些模式刻划了在运行时难以跟踪的复杂的控制流。它们将你的注意力从控制流转移到对...

嗯哼9925 ⋅ 2017/12/13 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

分布式数据库中间件DDM的实现原理

随着数据量不断增大,传统的架构模式难以解决业务量不断增长所带来的问题,特别是在业务成线性、甚至指数级上升的情况。此时我们不得不通过水平扩展,把数据库放到不同服务器上来解决问题,也...

中间件小哥 ⋅ 10分钟前 ⋅ 0

字符编码那点事:快速理解ASCII、Unicode、GBK和UTF-8

原作者:阮一峰(ruanyifeng.com),现重新整理发布,感谢原作者的无私分享。 1、引言 今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料。 这个问题比我想象的复杂,午饭...

JackJiang- ⋅ 17分钟前 ⋅ 0

Spring Cloud构建微服务架构:服务消费(基础)

使用LoadBalancerClient 在Spring Cloud Commons中提供了大量的与服务治理相关的抽象接口,包括DiscoveryClient、这里我们即将介绍的LoadBalancerClient等。对于这些接口的定义我们在上一篇介...

itcloud ⋅ 17分钟前 ⋅ 0

MaxCompute产品最新进展 -- 从马力到计算力

摘要:本文从马力作为功率衡量标准为切入点,介绍了大数据领域的计算力衡量标准TPCBB以及MaxCompute2.0在Big Bench上的卓越表现。同时详细地分享了取得优异成绩背后的产品在最新有哪些进展,...

猫耳m ⋅ 18分钟前 ⋅ 0

Linux系统

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 Linux系统: Unix:是C语言转做出来的,最早的网...

凯哥学堂 ⋅ 18分钟前 ⋅ 0

13.1 设置更改root密码 13.2 连接mysql 13.3 mysql常用命令

13.1 设置更改root密码 启动MySQL数据库 [root@linux-10 ~]# /etc/init.d/mysqld startStarting MySQL SUCCESS! 由于MySQL的相关命令的所在路径不在系统的环境变量中,因此需要将路径添...

影夜Linux ⋅ 21分钟前 ⋅ 0

jeesite shiro+redis实现cache和session共享

jeesite这个开源框架本身集成的有shiro+redis来实现cache和session共享,但是需要修改一下文件配置即可 首先找到spring-context-shiro.xml文件 找到bean id为sessionDAO,将其修改为如下 <!...

wangxujun59 ⋅ 21分钟前 ⋅ 0

基本JNI搭建

1、编写Java代码 首先我们需要编写自己的java代码 public class Hello { static{ System.loadLibrary("hello-jni"); } public native String sayHello();} 2、把...

国仔饼 ⋅ 23分钟前 ⋅ 0

MaxCompute产品最新进展 -- 从马力到计算力

摘要:本文从马力作为功率衡量标准为切入点,介绍了大数据领域的计算力衡量标准TPCBB以及MaxCompute2.0在Big Bench上的卓越表现。同时详细地分享了取得优异成绩背后的产品在最新有哪些进展,...

阿里云云栖社区 ⋅ 27分钟前 ⋅ 0

AppDelegate 设置Root相关

self.window = UIWindow.init(frame: UIScreen.main.bounds) self.window?.backgroundColor = UIColor.white self.window?.makeKeyAndVisible() self.window?.rootViewController = RootTabB......

west_zll ⋅ 35分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部