PHP设计模式之适配器模式代码实例

 更新时间:2015年05月11日 10:36:34   投稿:junjie  
这篇文章主要介绍了PHP设计模式之适配器模式代码实例,本文讲解了目标、角色、应用场景、优势等内容,并给出代码实例,需要的朋友可以参考下

目标:

可将一个类的接口转换成客户希望的另外一个接口,使得原本不兼容的接口能够一起工作。通俗的理解就是将不同接口适配成统一的API接口。

角色:

Target适配目标,该角色定义把其他类转换为何种接口,也就是我们的期望接口。
Adaptee被适配者,就是需要被适配的接口。
Adapter适配器,其他的两个角色都是已经存在的角色,而适配器角色是需要新建立的,它用来对Adaptee与Target接口进行适配。

应用场景:

如数据操作有mysql、mysqli、pdo、sqlite、postgresql等,假若生成环境需要更换数据库时,可利用适配器模式统一接口。同理cache的场景也是,这会是更换缓存策略(memcache、redis、apc)更方便。

优势:

被适配者通过适配器完成对适配目标的适配,以达到对客户使用透明的目的。

示例代码:

//适配目标,规定的接口将被适配对象实现
interface IDatabase
{
  public function connect($host, $username, $password, $database);
  public function query($sql);
}
 
//适配器
class Mysql implements IDatabase
{
  protected $connect;
 
  public function connect($host, $username, $password, $database)
  {
    $connect = mysql_connect($host, $username, $password);
    mysql_select_db($database, $connect);
    $this->connect = $connect;
    //...
  }
 
  public function query($sql)
  {
    //...
  }
}
 
//适配器
class Postgresql implements IDatabase
{
  protected $connect;
 
  public function connect($host, $username, $password, $database)
  {
    $this->connect = pg_connect("host=$host dbname=$database user=$username password=$password");
    //...
  }
 
  public function query($sql)
  {
    //...
  }
}
 
 
//客户端使用
$client = new Postgresql();
$client->query($sql);

如上:

Target适配目标: IDataBase接口
Adaptee被适配者: mysql和postgresql的数据库操作函数
Adapter适配器 :mysql类和postgresql类

相关文章

  • 详细Laravel5.5执行表迁移命令出现表为空的解决方案

    详细Laravel5.5执行表迁移命令出现表为空的解决方案

    这篇文章主要介绍了详细Laravel5.5执行表迁移命令出现表为空的解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • php设计模式之正面模式实例分析【星际争霸游戏案例】

    php设计模式之正面模式实例分析【星际争霸游戏案例】

    这篇文章主要介绍了php设计模式之正面模式,结合星际争霸游戏案例形式分析了php正面模式相关原理、使用技巧与操作注意事项,需要的朋友可以参考下
    2020-03-03
  • PHP实现长轮询消息实时推送功能代码实例讲解

    PHP实现长轮询消息实时推送功能代码实例讲解

    这篇文章主要介绍了PHP实现长轮询消息实时推送功能代码实例讲解,文中代码演示的很清楚,有感兴趣的可以研究参考下
    2021-02-02
  • thinkphp3.2.3版本的数据库增删改查实现代码

    thinkphp3.2.3版本的数据库增删改查实现代码

    下面小编就为大家带来一篇thinkphp3.2.3版本的数据库增删改查实现代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • php 使用预处理语句操作数据库

    php 使用预处理语句操作数据库

    今天这篇文章的内容其实也是非常基础的内容,不过在现代化的开发中,大家都使用框架,已经很少人会去自己封装或者经常写底层的数据库操作代码了。所以这回我们就来复习一下数据库中相关扩展中的预处理语句内容。
    2021-06-06
  • laravel中的一些简单实用功能

    laravel中的一些简单实用功能

    这篇文章主要给大家介绍了关于laravel中一些简单实用功能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • PHP中__autoload和Smarty冲突的简单解决方法

    PHP中__autoload和Smarty冲突的简单解决方法

    这篇文章主要介绍了PHP中__autoload和Smarty冲突的简单解决方法,通过spl_autoload_register注册__autoload函数的方法来解决__autoload函数再在Smarty无效的问题,需要的朋友可以参考下
    2016-04-04
  • PHP运行模式的深入理解

    PHP运行模式的深入理解

    本篇文章是对PHP运行模式进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP解析html类库simple_html_dom的转码bug

    PHP解析html类库simple_html_dom的转码bug

    这篇文章主要介绍了PHP解析html类库simple_html_dom的转码bug ,需要的朋友可以参考下
    2014-05-05
  • php过滤HTML标签、属性等正则表达式汇总

    php过滤HTML标签、属性等正则表达式汇总

    这篇文章主要介绍了php过滤HTML标签、属性等正则表达式汇总,本文使用代码实例给出了过滤HTML内容的正则表达式,具体说明请参阅代码中的注释,本文对使用PHP做采集的朋友有比较大的作用,需要的朋友可以参考下
    2014-09-09

最新评论