现代软件工程作业

现代软件工程作业

ID:42219888

大小:189.82 KB

页数:9页

时间:2019-09-10

现代软件工程作业_第1页
现代软件工程作业_第2页
现代软件工程作业_第3页
现代软件工程作业_第4页
现代软件工程作业_第5页
资源描述:

《现代软件工程作业》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、现代软件工程设计模式之解释器模式计算机与信息工程学院院班:班级:组员:学号:设计模式一解释器模式一、设计模式设计模式(Designpattern)是软件设计中常见问题的通用解决方案。其实没有规范的基础,因为设计模式通常是一种实践方式,用以弥补规范机制的缺失。当编程语言不能提供抽象机制,而这些机制在现实应用程序开发过程中乂菲常有用时,通常会创造设计模式。它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、讣代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真止工程化;设计模式是软件工程的基石脉

2、络,如同大厦的结构一样。现有的设计模式分为三种类型,大约有23利4第一种创建型模式;单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。第二中结构型模式;适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。还有行为型模式;模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。二解析器模式解释器模式(InterpreterPattern)属于类行为型模式,其意图是给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言屮的句子。定义语言的文法,并且建立一个解释器来解

3、释该语言屮的句T.Interpreter似乎使用面不是很广,它描述了一个语言解释器是如何构成的,在实际应用中,我们可能很少去构造一个语言的文法•我们还是来简单的了解一卜•:首先耍建立一个接口,用来描述共同的操作•解释器模式屈于行为型模式,其意图是给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言屮的句子。如果一种特定类型的问题发生的频率足够高,那么就可值得将该问题的各个实例表述为一个简单语言的句子,这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。解释器模式使用类来表达何一条文法规则,在规则右边的符号是这些类的实例变量。2.1解释器模式适用系统冇

4、一个简单的语言可供解释,当冇一个语言需耍解释执行,并且你可将该语言中的句了表示为一个抽象语法树时,可使用解释器模式。而当存在以下情况时该模式效果最好。一些重复发牛的问题可以用这种简单-的语言表达,该文法简单对于复杂的文法,文法的类层次变得庞大而无法管理。此时语法分析程序生成器这样的工具是更好的选择。它们无需构建抽彖语法树即可解释表达式,这样可以节省空间而且还可能节省时间。效率不是主要的考虑,效率不是一个关键问题最高效的解释器通常不是通过直接解释语法分析树实现的,而是首先将它们转换成另一种形式。例如,正则表达式通常被转换成状态机。但即使在这种情况下,转换器仍可用解释器模式实现,该模式仍是冇用

5、的。由上可以看出没有好的实例可以引入解释器模式,因为它描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发编译器中,实际应用中并不常见,虽然少用但通过对它的了解述是能受到一些启发的。2.1.1解释器模式的组成如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句了。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。而且当文法简单、效率不是关键问题的时候效果最好,这也就是解释器模式应用的环境了。解释器模式与组合模式有很大的相似性。正如GoF所言,在最宽泛的概念下,几乎每个使用复合模式的系统也都使用了解释器模式。解释器模式与

6、组合模式的不同主耍体现在,解释器模式中的几个解释器类都冇相同的接口,而组合模式则是直接聚合几个没冇关联的类。解释器模式的应用场合比较窄。解释器模式在《HeadFirstDesignPagtterns))中也被列为非常用模式。解释器模式虽然说更多应用在某种语言上,但是解释器的原理述是可以应用在英他场合的。2.2模式结构解释器模式虽说多用于某种解释语言上,但是其思想述是可以应用在其它方面的。解释器模式作为类行为模式,其主要是通过将一组平行操作的行为捕象出來作为独立的类存在。以达到降低类调用的耦合以及更方便地添加新的解释操作。这里举一个比较简单示例,类图如下:行为型设计模式一解秤器模式Cinte

7、rpreter!)结构图图2.2-1解释器模式结构解释器模式包含角色:Client:客户类构建Context,以及完成解释器的调用操作。Contex:环境类需要被解释的文件内容。AbstractExpression:抽彖表达式捉供接口。TerminalExpression:终结符表达式NonterminalExpression:非终结符表达式实现接口的具冇解释操作。1抽象表达式角色:声明一个抽象的解释操作,这个接口为所有

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。