Interpreter 解释器模式(行为型模式) 动机(Motivation) 在软件构建过程中,如果某一特定领域的问题比较复杂,类似的模式不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化. 在这种情况下,将特定领域的问题表达为某种语法规则下的句子,然后构建一个解释器来解释这样的句子,从而达到解决问题的目的. 意图(Intent) 给定一个语言,定义它的文法的一种表示,并定义一种解释器,这个解释器用来解释语言中的句子.——<设计模式>GoF 中文数字转换为阿拉伯数字 public…
索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Interpreter 模式结构样式代码. 实现方式(二):解释波兰表达式(Polish Notation). 意图 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. Given a language, define a represention for its grammar along with an interpreter that uses the representa…
Interpreter定义:定义语言的文法,并且建立一个解释器来解释该语言中的句子. Interpreter似乎使用面不是很广,它描述了一个语言解释器是如何构成的,在实际应用中,我们可能很少去构造一个语言的文法.我们还是来简单的了解一下. 首先要建立一个接口,用来描述共同的操作. public interface AbstractExpression { void interpret( Context context ); } 再看看包含解释器之外的一些全局信息 public interface…
索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Visitor 模式结构样式代码. 实现方式(二):使用 Visitor 模式解构设计. 实现方式(三):使用 Acyclic Visitor 模式解构设计. 意图 表示一个作用于某对象结构中的各元素的操作. Visitor 使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作. Represent an operation to be performed on the elements of an object s…
面向对象 现在,主流的编程范式或者是编程风格有三种,它们分别是面向过程.面向对象和函数式编程.面向对象这种编程风格又是这其中最主流的.现在比较流行的编程语言大部分都是面向对象编程语言.大部分项目也都是基于面向对象编程风格开发的.面向对象编程因为其具有丰富的特性(封装.抽象.继承.多态),可以实现很多复杂的设计思路,是很多设计原则.设计模式编码实现的基础. 所以,在专栏的最开始,我们会详细地讲解面向对象编程的相关的知识,为学习后面的内容做铺垫.对于这部分内容,你需要掌握下面这 7 个大的知识点.…
1.Interpreter 解释器模式 解释器模式是一种使用频率相对较低但学习难度较大的设计模式,它用于描述如何使用面向对象语言构成一个简单的语言解释器.在某些情况下,为了更好地描述某一些特定类型的问题,我们可以创建一种新的语言,这种语言拥有自己的表达式和结构,即文法规则,这些问题的实例将对应为该语言中的句子.此时,可以使用解释器模式来设计这种新的语言.对解释器模式的学习能够加深我们对面向对象思想的理解,并且掌握编程语言中文法规则的解释过程. 解释器模式定义如下:解释器模式(Interprete…
索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Product Trader 的示例实现. 意图 使客户程序可以通过命名抽象超类和给定规约来创建对象. Product Trader 让客户程序与 Product 类解耦,从而使得类的层级结构.框架和应用程序易于改写.配置和演进. Let clients create objects by naming an abstract superclass and by providing a specification. A Pr…
索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Null Object 的示例实现. 意图 通过对缺失对象的封装,以提供默认无任何行为的对象替代品. Encapsulate the absence of an object by providing a substitutable alternative that offers suitable default do nothing behavior. In short, a design where "nothing w…
索引 别名 意图 结构 参与者 适用性 效果 实现 实现方式(一):Dynamic Property 的示例实现. 别名 Property Properties Property List 意图 使对象可以为客户提供广泛且可扩展的属性集合. Lets an object provides a generic and extensible set of properties to clients. 结构 参与者 Object 目标对象可存储 Property 列表. 可使用不同的类型来作为 Pro…
索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Role Object 的示例实现. 意图 通过明确地附加角色对象到目标对象中,以使对象可以适配不同的客户需求.每个角色对象都代表着目标对象在客户上下文中的一种角色.每种上下文都存在于特定的应用程序中,因此可使对象在不同的应用程序间解耦. Adapt an object to different client’s needs through transparently attached role objects, each…