`
GLC
  • 浏览: 112751 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

设计模式----解释器模式

 
阅读更多

设计模式的学习,我参考了开涛的博客;里面的内容讲解得比较详细。记得最开始学习设计模式是大二,那时从简单的抽象工厂模式开始着手、但找不到感觉,而且在实际应用中也较少应用。后来、慢慢熟悉理解并应用java的各种基础知识后,对设计模式的应用便有了简单的了解,学起来也变得容易理解了。所以、学习设计模式前,对java的抽象类和接口及重写重载的定义和区别要有充分的理解。

设计模式的意义:也就是设计模式的六大原则。目的就是降低依赖、降低耦合。
开闭原则:扩展开放、修改关闭。
里氏代换原则:任何基类出现的地方、子类一定可以出现。
依赖倒转原则:针对接口编程、依赖抽象而不依赖具体。
接口隔离原则:使用多个接口要比使用单个接口要好。
迪米特法则(最少知道原则):一个实体尽量少与其他实体之间发生相互最用。
合成复用原则:尽量使用合成或聚合的方式、而不是继承;这个我目前不是很理解。

设计模式从大类可以分为三大块:创建型模式、结构型模式、行为型模式。

创建型模式较为简单、含有五个:单例模式、抽象工厂模式、工厂方法模式、建造者模式、原型模式。

结构型模式有七个:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

剩下的行为型模式有11个:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解析器模式。


今天、我就从解析器模式开始,用做各种各样的解析器的解析。

常见的应用场景有数据的计算。当我们计算多目运算时,就可以套用;一般应用较多的在编译器及正则表达式等解析器中。

比如数据计算:9+2-8
我们就可以用解析器模式来进行运算。

1、先写一个接口、用来定义运算方法:



package com.pingan.mobile;
public interface Expression {
	public int enterpret(Context context);
}



2、然后写实体类,定义属性作为运算的数据;并生成get和set方法。



public class Context {
	private int num1;
	private int num2;
public Context(int i, int j) {
		this.num1 = i;
		this.num2 = j;
	}
	public int getNum1() {
		return num1;
	}
	public void setNum1(int num1) {
		this.num1 = num1;
	}
	public int getNum2() {
		return num2;
	}
	public void setNum2(int num2) {
		this.num2 = num2;
	}




3、运算方法的具体实现,通过实现Expression接口。


public class Minus implements Expression {
	@Override
	public int enterpret(Context context) {
		return context.getNum1()-context.getNum2();
	}
}
public class Plus implements Expression{
	@Override
	public int enterpret(Context context) {
		return context.getNum1()+context.getNum2();
	}
}






这里只写了加法和减法;根据需要、还可以添加乘除等其他运算方法。
5、最后来调用:




public static void main(String[] args) {
		int result = new Plus().enterpret(new Context(9,2));
		result = new Minus().enterpret(new Context(result,8));
		System.out.println("9+2-8="+result);
	}



这就是简单的解释器模式应用。在实际生成过程中、可能会比这个更复杂。
下面、我用例图来表示下之间的相互关系:



下面附源代码,供参考。

下一篇我准备讲中介者模式。
  • 大小: 89.9 KB
分享到:
评论

相关推荐

    JAVA-设计模式-行为型模式-解释器模式

    JAVA-设计模式-行为型模式-解释器模式

    c++设计模式-行为型模式-解释器模式

    c++设计模式-行为型模式-解释器模式;qt工程;c++简单源码; 解释器(Interpreter)模式的定义:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式...

    设计模式-解释器模式

    **解释器模式**是一种行为设计模式,它提供了一种方式来表示语言或表达式的语法,并通过解析这些语法来执行相关操作。在iOS开发中,解释器模式常常用于处理简单的脚本或表达式,例如在运行时计算数学表达式、解析...

    设计模式-Java语言中的应用

    设计模式通常分为三类:创建型模式(如工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式),结构型模式(如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式、享元模式)以及行为型模式(如...

    java设计模式---诙谐易懂版

    代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法模式(Factory Method Pattern)、抽象...解释器模式(Interpreter Pattern)、享元模式(Flyweight Pattern)、备忘录模式(Memento Pattern)等...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    - 解释器模式(Interpreter):给定一种语言,定义它的文法表示,并提供一个解释器来处理这种语言中的句子。 - 迭代器模式(Iterator):提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - 中介者...

    java设计模式-解释器模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...

    设计模式-解释器模式(讲解及其实现代码)

    **解释器模式**是一种行为设计模式,它提供了一种方式来表示语言的语法,并通过类和对象解析这种语法。在编程领域,解释器模式常用于创建简单的语言或表达式解析器,例如配置文件、计算器应用或者SQL查询的简化版本...

    Java设计模式----通俗易懂版

    - 解释器模式:提供一个语言的文法表示,并定义了一个接口,用于解释语言中的句子。 - 迭代器模式:提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - 中介者模式:用一个中介对象来封装一系列的...

    设计模式专题之(二十二)解释模式---设计模式解释模式示例代码(python--c++)

    解释模式,也称为解释器模式,是设计模式的一种,它允许我们创建一个语言的语法,并提供一个解释器来执行这个语言。在解释器模式中,我们通常会定义一个表达式接口,该接口负责解释特定的语法结构,然后为每种语法...

    设计模式课件大全

    设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式、备忘录模式 设计模式15-观察者模式、状态模式 设计模式16-策略模式、模板方法、访问者 此PPT实例便于理解,对于深入理解OO思想有很大帮助。

    软件设计模式--填空题+简答题(复习7).rar

    2. **设计模式分类**:设计模式通常分为三类:创建型模式(如工厂方法、抽象工厂、单例、建造者、原型)、结构型模式(如适配器、桥接、装饰、组合、代理、外观、享元)和行为型模式(如责任链、命令、解释器、迭代...

    JAVA设计模式-chm版

    包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式...

    设计模式-C++

    创建型模式,共五种:工厂方法模式、抽象工厂模式、...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    设计模式-华工课件 设计模式

    3. 行为型模式:这类模式主要关注对象之间的交互和责任分配,包括责任链模式、命令模式、解释器模式、迭代器模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。例如,命令模式将请求...

    23种 设计模式---面向对象的基本原则

    - 解释器模式(Interpreter):给定一种语言,定义它的文法表示,并提供一个解释器来处理该语言中的句子。 - 迭代器模式(Iterator):提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - 中介者模式...

    设计模式之解释器

    解释器模式是一种行为型设计模式,主要用于处理语言的文法规则、算术规则等问题。它通过定义语言的文法,并根据该文法来解释句子,使得我们可以用统一的方式处理各种语言结构。本文将通过具体的例子——加减运算来...

    设计模式精解-GoF 23种设计模式解析附C++.pdf

    - **Interpreter模式**:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 #### 4. 总结 设计模式的学习不仅是为了记住每种模式的应用场景,更重要的是理解其...

Global site tag (gtag.js) - Google Analytics