`
GLC
  • 浏览: 110694 次
  • 性别: 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)模式的定义:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式...

    java常用设计模式-解释器模式

    java常用设计模式-解释器模式

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

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

    java设计模式-解释器模式

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

    设计模式课件大全

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

    设计模式-解释器模式

    ios平台下讲解解释器模式简单代码,可也查看博客对设计模式的简单介绍或者定义http://blog.sina.com.cn/s/blog_161d504630102wxis.html

    设计模式-C++

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

    设计模式--C++

    5.3 INTERPRETER(解释器)—类行为型模式 162 5.4 ITERATOR(迭代器)—对象行为型模式 171 5.5 MEDIATOR(中介者)—对象行为型模式 181 5.6 MEMENTO(备忘录)—对象行为型模式 188 5.7 OBSERVER(观察者)—对象...

    设计模式之解释器模式Java版本实现

    设计模式之解释器模式的Java版本实现和UML类图设计

    23种设计模式 -设计模式图解.7z

    23种设计模式的特点定义、优缺点、使用场景,源码中...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    设计模式-类图

    结构型模式 :适配器模式、装饰器模式、代理模式、外观模式、...行为型模式 :策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式 ;

    设计模式之解释器

    解释器模式,主要用于语言的文法规则,算术规则等

    设计模式-装饰器模式

    ios平台中通过最简单的代码讲解装饰器模式,可在博客http://blog.sina.com.cn/s/blog_161d504630102wxis.html中查看简单解释

    设计模式--可复用面向对象软件的基础

    5.3 INTERPRETER(解释器)——类行为型模式 5.4 ITERATOR(迭代器)——对象行为型模式 5.5 MEDIATOR(中介者)——对象行为型模式 5.6 MEMENTO(备忘录)——对象行为型模式 5.7 OBSERVER(观察者)——对象行为型...

    设计模式之解释器模式(Interpreter)

    解释器模式(Interpreter) 用意:定义一种语言,定义它的方法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

    研磨设计模式-part2

    第21章 解释器模式(Interpreter) 第22章 装饰模式(Decorator) 第23章 职责链模式(Chain of Responsibility) 第24章 桥接模式(Bridge) 第25章 访问者模式(Visitor) 附录A常见面向对象设计原则 附录...

    研磨设计模式-part4

    第21章 解释器模式(Interpreter) 第22章 装饰模式(Decorator) 第23章 职责链模式(Chain of Responsibility) 第24章 桥接模式(Bridge) 第25章 访问者模式(Visitor) 附录A常见面向对象设计原则 附录...

    研磨设计模式-part3

    第21章 解释器模式(Interpreter) 第22章 装饰模式(Decorator) 第23章 职责链模式(Chain of Responsibility) 第24章 桥接模式(Bridge) 第25章 访问者模式(Visitor) 附录A常见面向对象设计原则 附录...

Global site tag (gtag.js) - Google Analytics