php常用的设计模式实践【5】

命令模式:将一个请求封装成一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排毒或记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作模式或事务模式。

为什么需要命令模式:

  • 能够让请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用更加灵活
  • 比较容易的设计一个命令队列和宏命令(组合命令),从而新的命令可很容易地加入系统

命令模式示例代码

备忘录模式: 在不破坏封闭的前提下,捕获一个对象内部状态,并对该对象之外保存这个状态。 又叫快照模式或token模式

为什么需要备忘录模式:

  • 有时一些发起人对象的内部信息必须保存在发起人对象以外的地方,但必须由发起人对象自己读取,这时,备忘录模式可以把复杂的发起人内部信息对其他的对象屏蔽,从而恰当地保持封装的边界
  • 本模式简化了发起人class。发起人不再需要管理和保存内部状态的一个个版本,客户端可自行管理他们所需要的这些状态版本

备忘录模式示例代码

 

状态模式:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。

为什么需要状态模式:

  • 将所有与某个状态有关的行为放在一个类,且可以方便地增加新的状态,只需要改变对象的状态即可改变行为
  • 发起人不再需要管理和保存内部状态的一个个版本,客户端可自行管理

状态模式示例代码

 

访问者模式:一个作用于某对象结构中的各元素的操作。使你可以在不改变各元素类的前提下定义作用于这些元素的操作。

为什么需要访问者模式:

  • 访问者模式能够在不更改对象的情况下向对象添加新的功能

访问者模式示例代码