解释器模式

定义

Interpreter Patttern:给定一个语言,定义它的文法的一种表示,并定义一个解释器。

类图

角色

  • AbstractExpression(抽象表达式):声明一个所有的具体表达式角色都需要实现的抽象接口。这个接口主要是一个interpret()方法,称做解释操作。
  • TerminalExpression(终结符表达式):实现了抽象表达式角色所要求的接口,主要是一个interpret()方法;文法中的每一个终结符都有一个具体终结表达式
    与之相对应。比如有一个简单的公式R=R1+R2,在里面R1和R2就是终结符,对应的解析R1和R2的解释器就是终结符表达式。
Read More

备忘录模式

定义

Memento Pattern:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。

类图

角色

  • 原发器 (Originator) :记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。
  • 备忘录 (Memento) :负责存储发起人对象的内部状态,在需要的时候提供发起人需要的内部状态。
Read More

模板方法模式

定义

Template Method Pattern:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。

类图

角色

  • 抽象类 (AbstractClass):会声明作为算法步骤的方法, 以及依次调用它们的实际模板方法。 算法步骤可以被声明为抽象类型, 也可以提供一些默认实现。
  • 具体类 (ConcreteClass):可以重写所有步骤, 但不能重写模板方法自身。
Read More

命令模式

定义

Command Pattern:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。
命令模式的别名为动作(Action)模式或事务(Transaction)模式。

类图

角色

  • 客户端(Client)角色:创建一个具体命令(ConcreteCommand)对象并确定其接收者。
  • 命令(Command)角色:声明了一个给所有具体命令类的抽象接口。
Read More

中介者模式

定义

用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。

类图

角色

  • 抽象中介者(Mediator):定义出同事对象到中介者对象的接口,其中主要方法是一个(或多个)事件方法。
  • 具体中介者(ConcreteMediator):实现了抽象中介者所声明的事件方法。具体中介者知晓所有的具体同事类,并负责具体的协调各同事对象的交互关系。
Read More