php设计模式之适配器模式

在软件开发中采用类似于电源适配器的设计和编码技巧被称为适配器模式。

适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器模式使接口不兼容的那些类可以一起工作。有一张图可以非常清晰表明适配器模式的作用

模式结构

适配器模式包含如下角色:

  • Target:目标抽象类
  • Adapter:适配器类
  • Adaptee:适配者类
  • Client:客户类

模式流程

  • 创建适配者对象
  • 创建适配器对象,并将适配者对象传递给适配器
  • 调用适配器对象的request方法,request会继续调用适配者的specificRequest方法。

代码示例

假如我们有一个日志记录接口,定义如下

interface LogInterface
{
   public function write ($msg);
}

后来,我们找到了一个第三方的类库EasyLog.php,觉得比较好非常的好用,但它实现日志记录的方法名叫Log

public function log ($msg){……}

如果我们想要将该类库接入到目前系统,就可以使用适配器模式

class EasyLogAdapter implements LogInterface
{
   private $easyLog = null;

   public function __construct($easyLog)
  {
       $this->easyLog = $easyLog;
  }

   public function write($msg)
  {
       $this->easyLog->log($msg);
  }
}

文章部分内容参考自:https://design-patterns.readthedocs.io/zh_CN/latest/structural_patterns/adapter.html