设计模式之解释器、调停者模式

  解释器模式和调停者模式都是行为型模式,由于二者用的情形比较少,不作过多解读,介绍一下相关概念,以作参考。

  解释器模式有点儿“编译器”的概念,像个超级简单的编译器,且跟硬件无关,它的目的是定义语言(使用规定格式和语法的代码)的文法,然后建立一个解释器来解释该语言中的句子。

  在 GOF 的书中指出:如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。而且当文法简单、效率不是关键问题的时候效果最好——这也就是解释器模式适用的环境。

  放张解释器结构类图吧,作为参考,此处不作更深入的解读了。

  调停者模式定义为用一个调停对象来封装一系列的对象交互。调停者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互简单点来说,将原来两个直接引用或者依赖的对象拆开,在中间加入一个“调停”对象,使得两头的对象分别和“调停”对象引用或者依赖。当然并不是所有的对象都需要加入“调停”对象。如果对象之间的关系原本一目了然,调停对象的加入便是“画蛇添足”。

  来看下调停者模式的组成部分吧。
1) 抽象调停者(Mediator)角色:抽象调停者角色定义统一的接口用于各同事角色之间的通信。
2) 具体调停者(Concrete Mediator)角色:具体调停者角色通过协调各同事角色实现协作行为。为此它要知道并引用各个同事角色。
3) 同事(Colleague)角色:每一个同事角色都知道对应的具体调停者角色,而且与其他的同事角色通信的时候,一定要通过调停者角色协作。
来自《设计模式》一书的类图:

  是否还记得应用广泛的 MVC 分为哪三层?模型层(Model)、表现层(View)还有控制层(Control\Mediator)。控制层便是位于表现层与模型层之间的调停者。笼统地说MVC 也算是调停者模式在框架设计中的一个应用。

时间: 2024-10-03 22:40:36

设计模式之解释器、调停者模式的相关文章

Java设计模式之《调停者模式》及应用场景

原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6518603.html 调停者模式. 我们想象一下这样的场景:一个系统内部通过许多的类互相之间相互调用来完成一系列的功能,这个系统内部的每个类都会存在至少一次的调用与被调用,多者数不胜数,这种情况下,一旦某个类发生问题,进行修改,无疑会影响到所有调用它的类,甚至它调用的类,可见这种情况下,类与类之间的耦合性极高(体现为太多的复杂的直接引用). 这正是调停者模式的主场,调停者犹如第三方中介一

《Java设计模式》之调停者模式(Mediator)

调停者模式是对象的行为模式.调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用.从而使它们能够较松散地耦合.当这些对象中的某些对象之间的相互作用发生改变时,不会马上影响到其它的一些对象之间的相互作用. 从而保证这些相互作用能够彼此独立地变化. 为什么须要调停者 例如以下图所看到的.这个示意图中有大量的对象,这些对象既会影响别的对象,又会被别的对象所影响,因此经常叫做同事(Colleague)对象.这些同事对象通过彼此的相互作用形成系统的行为.从图中能够看出.差点儿每个对象都须

大话设计模式_解释器模式(Java代码)

解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 简单描述:一个AbstractExpression类,多个子类,存在一个Interpret方法,转义Context对象的信息.客户端根据信息实例化不同的Expression类,并调用其转义方法(这个过程可以使用简单工厂+反射进行) 大话设计模式中的截图: 代码例子: 假设HTML代码解释器: (1)第一类标签<HTML>(开始)/<HEAD>(头信息)/<BODY&g

GOF23设计模式之解释器模式和访问器模式的理解

设计模式之解释器模式Interpreter      是一种不常用的设计模式      用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计.      当我们需要开发一种新的语言时,可以考虑使用解释器模式.      尽量不要使用解释器模式,后期维护会有很大麻烦.在项目中可以使用jruby,Groovy,java的js引擎来代替解释器的作用,弥补java语言的不足. 开发中常见的场景:      EL表达式的处理      正则表达式解释器      SQL语

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

23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象.创建型模式有两个不断出现的主旋律.第一,它们都将关于该系统使用哪些具体的类的信息封装起来.第二,它们隐藏了这些类的实例是如何被创建和放在一起的.整个系统关于这些对象所知道的是由抽象类所定义的接口.因此,创建型模式在什么被创建,谁创建它,它是怎样被创建的,以

C#设计模式:解释器模式(Interpreter Pattern)

一,C#设计模式:解释器模式(Interpreter Pattern) 1,解释器模式的应用场合是Interpreter模式应用中的难点,只有满足“业务规则频繁变化,且类似的模式不断重复出现,并且容易抽象为语法规则的问题”才适合使用解释器模式2,解释器设计模式每个解释的类有自己的规则,并且与其他业务规则不冲突 二,如下代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; u

设计模式_Mediator_调停者模式

形象例子: 四个MM打麻将,相互之间谁应该给谁多少钱算不清楚了,幸亏当时我在旁边,按照各自的筹码数算钱,赚了钱的从我这里拿,赔了钱的也付给我,一切就OK啦,俺得到了四个MM的电话.调停者模式: 调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用.从而使他们可以松散偶合.当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用.保证这些作用可以彼此独立的变化.调停者模式将多对多的相互作用转化为一对多的相互作用.调停者模式将对象的行为和协作抽象化,把对象在小尺度的行为

JAVA设计模式之调停者模式

在阎宏博士的<JAVA与模式>一书中开头是这样描述调停者(Mediator)模式的: 调停者模式是对象的行为模式.调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用.从而使它们可以较松散地耦合.当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用.从而保证这些相互作用可以彼此独立地变化. 为什么需要调停者 如下图所示,这个示意图中有大量的对象,这些对象既会影响别的对象,又会被别的对象所影响,因此常常叫做同事(Colleague)对象.这

java设计模式9.备忘录模式、访问者模式、调停者模式

备忘录模式 备忘录模式又叫快照模式,备忘录对象是一个用来存储另外一个对象内部状态快照的对象.备忘录的用意是在不破坏封装的条件下,将一个对象的状态捕捉,并外部化存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态,备忘录模式常与命令模式和迭代子模式一起使用. 访问者模式 访问者的目的是封装一些施加于某种数据结构元素之上的操作.一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变.访问者模式使适用于数据结构相对未定的系统,它把数据结构和作用于结构之上的操作解耦. 抽象访问者角色