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

中介者模式

用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,可以独立地改变他们之间的交互。又称调停者模式,一种对象行为型模式。

为什么需要中介者模式:

  • 可以使对象之间的关系数量急剧减少
  • 中转作用:通过中介者提供的中转作用,各个对象不需要显式引用其他类,当需要和其他对象进行通信时,通过中介者即可。
  • 协调作用:中介者更一步地对对象之间的关系进行封装,可以一致地和中介者进行交互,不需要指明中介者需要具体怎么做,中介者根据封装在自身内部的协调逻辑,进行进一步处理,将对象成员之间的关系行为进行分离和封装。

中介者模式示例代码

解释器模式:提供评估语言的语法或表达式的方式,属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在SQL解析、符号处理引擎

为什么需要解释器模式:

  • 可以将一个需要解释执行的语言中的句子表示为一个抽象语法树

解释器模式示例代码

数据映射模式

描述如何创建提供透明访问任务数据源的对象。也叫数据访问对象模式,或数据对象映射模式。

为什么需要数据映射模式:

  • 目的是让持久化数据存储层、驻于内存的数据表现层、以及数据映射本身三者相互独立、互不依赖。这个数据访问层由一个或多个映射器(或数据访问对象)组成,用于实现数据传输。

数据映射模式示例代码

注册树模式:

注册树模式为应用中经常使用的对象创建一个中央存储器来存放这些对象—– 通常通过一个只包含静态方法的抽象类来实现

为什么需要注册树模式:

  • 解决常用对象的存放问题,实现类似于全局变量的功能

注册树模式示例代码

空对象模式:

用一个空对象取代NULL,减少对示例的检查。这样的空对象可以在数据不可用的时候提供默认的行为

为什么需要空对象模式:

  • 解决在需要一个对象时放返回一个null值,使其调用函数出错的情况

空对象模式示例代码