设计模式问答(2)-java开发java经验技巧

设计模式问答(2)-java开发java经验技巧

ID:31118148

大小:76.00 KB

页数:15页

时间:2019-01-06

设计模式问答(2)-java开发java经验技巧_第1页
设计模式问答(2)-java开发java经验技巧_第2页
设计模式问答(2)-java开发java经验技巧_第3页
设计模式问答(2)-java开发java经验技巧_第4页
设计模式问答(2)-java开发java经验技巧_第5页
资源描述:

《设计模式问答(2)-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、设计模式问答(2)-编程开发技术设计模式问答(2)木文由ImportNew・shcnggordon翻译自codeprojecto欢迎加入翻译小组。转载请见文末要求。介绍这是设计模式问答1的连载。在这个系列,我们将覆盖到解释器、迭代器、调停者、备忘录和观察者模式。如果你还没冇阅读过我之前的系列,你可以随时从下面开始•设计模式问答1:工厂模式,抽象工厂模式,构造者模式,原型模式,单例模式,命令模式•设计模式问答3:状态模式,策略模式,访问者模式,适配器模式,享元模式•设计模式问答4:桥接模式,组合模式,装饰者模式,外观模式,职责链模式(COR),代理模式,模板模式•UML问答1:

2、UML部分1•UML问答2:UML部分2什么是解释器模式?解释器模式允许我们将语法解释为代码解决方案。好了,这意味着什么?语法会被映射到类,并形成解决方案。举个例子,7-2能够被映射到“cisMinus"类。一句话,解释器模式为我们提供了一种解决方案,这个方案指导如何编写一个解析语法并执行代码的解释器。下而是一个解释器的简单例子,它能够按照我们提供的日期格式语法,将日期解释为对应的代码,并输入正确的结果。口期语法让我们开始做图“日期语法”屮所示的日期格式的解释器。在开始Z前,我们要先理解一下解释器模式中不同的组件,然后再来处理映射。上下文部分包含数拯,而逻辑部分包含将上下文中

3、数据转换成可读格式的转换逻辑。上卜•文和逻辑让我们看一卜•日期格式的语法是怎么定义的。定义任何语法的第一步,是把语法分解成小的逻辑组件。图“语法映射与类的映射”展示了怎么识别这些组件,以及怎么映射到处理这部分语法的逻辑类上面。我们己经把日期格式打断成了4个组件,分别是月、日、年和分隔符。对这4个组件,我们将分别定义包含图中展示的逻辑的类。然后,我们将为F1期格式的不同组件创建不同的类。语法映射与类的映射前面说过,有两种类,一种是包含逻辑的表达式类,另一种是包含数据的上下文类,如图“表达式和上下文类”屮所示。我们定义了不同类屮的表达式解析算法,这些类都从公共接口“ClsAbst

4、ractExpression”派生,并实现了"Evaluate"方法。"Evaluate"方法接收包含数据的上F文类作为参数;它根据表达式逻辑来解析数据。“ClsYearExpression”实例将“YYYY”替换成年份值,而"ClsMonthExpression”将“MM”替换成月份值,以此类推。解释器类图表达式和上下文类现在,我们有了单独的表达式解析逻辑类,然后我们来看看客户端会如何使用这个逻辑。客户端首先把日期语法格式传递给上下文类。依据日期格式,我们依次向集合中添加表达式实例。如果我们找到了“DD”,我们就添加一个“ClsDayExpression”实例;如果我们找到

5、了"MM”,就添加一个“ClsMonthExpression”实例,等等。最后,我们只需要遍历集合,并调用"Evaluate"函数。所有的"Evaluate"函数执行完之后,我们就显示结果。客户端解释器逻辑你能解释迭代器模式吗?迭代器模式允许在不暴露内部代码实现的情况下,顺序访问毎个元素。让我们来理解一下。假设你有一个记录集合,你需要顺序遍历每条记录,并且需要保持当前访问的位置,那么你需要的正是迭代器模式。这是最普通的设计模式,你会在不知不觉中用到它。在某些程度上,当你使用“foreach”(它允许我们逐个元素地访问一个集合)时,你就已经在使用迭代器模式了。迭代器业务逻辑在图

6、“迭代器业务逻辑”中,我们使用“cisIterator”类來存放顾客类的集合。我们在“clsltcmtor”类内部,定义了一个数组,和一个名称为“FillObjects”的方法,这个方法用来加载数组的内容。顾客集合数组是私冇的,顾客的数据可以通过数组的下标来访问。因此我们定义了一组公有函数,包含“getBylndex”(通过指定下表来访问),“Prev”(得到集合屮前一个顾客数据),“Next”(得到集合中下一个顾客数据),“getFirst”(得到集合中第一个顾客数据),“gctSst”(得到集合中最后一个顾客数据)。我们只对客户端暴露这些函数。这些函数小心的顺序遍历集合,

7、并能够记忆当前遍历的索引。下面的图“客户遍历逻辑”说明了该如何使用类“clslleralor”的实例"ObjIterator",显示下一个、前一个、最后一个、第一个,以及通过索引显示顾客数据。客户遍历逻辑你能解释调停者模式吗?大多数吋候,项口小组件间的通讯都很复杂。因此组件间的逻辑关系也变得异常复杂。调停者模式帮助对象间用不互相关联的方式來通讯,从而使复杂度最小化。调停者模式示例让我们考虑图“调停者模式示例”,它描述了i个需要使用调停者模式的真实场景。它是一个非常用户友好的接口。它冇3个典型的场景。场景

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

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

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