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类

相关文章

  • php利用imagemagick实现复古老照片效果实例

    php利用imagemagick实现复古老照片效果实例

    imagick是一个PHP的扩展,用ImageMagick提供的API来进行图片的创建与修改,不过这些操作已经包装到扩展imagick中去了,最终调用的是ImageMagick提供的API。这篇文章主要给大家介绍了php利用imagemagick实现复古老照片的效果实例,需要的朋友可以参考下。
    2017-02-02
  • php读取大文件示例分享(文件操作类)

    php读取大文件示例分享(文件操作类)

    这篇文章主要介绍了php读取大文件示例,这也是一个文件操作类,同时可以学习一下php的文件操作方法,需要的朋友可以参考下
    2014-04-04
  • XAMPP安装与使用方法详细解析

    XAMPP安装与使用方法详细解析

    这篇文章主要是对XAMPP安装与使用方法进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • 使用php伪造referer的方法 利用referer防止图片盗链

    使用php伪造referer的方法 利用referer防止图片盗链

    当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理,不过这个Referer是可以伪造,下面看一个示例,大家就明白了
    2014-01-01
  • Laravel 错误提示本地化的实现

    Laravel 错误提示本地化的实现

    今天小编就为大家分享一篇Laravel 错误提示本地化的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • laradock环境docker-compose操作详解

    laradock环境docker-compose操作详解

    在本篇文章中小编给大家整理的是关于laradock环境docker-compose操作的相关知识点内容,有需要的朋友们参考学习下。
    2019-07-07
  • thinkPHP js文件中U方法不被解析问题的解决方法

    thinkPHP js文件中U方法不被解析问题的解决方法

    这篇文章主要介绍了thinkPHP js文件中U方法不被解析问题的解决方法,结合实例形式分析了thinkPHP在js文件中U方法不被解析的原因与相应的处理技巧,需要的朋友可以参考下
    2016-12-12
  • PHP程序中使用adodb连接不同金沙国际官网的代码实例

    PHP程序中使用adodb连接不同金沙国际官网的代码实例

    这篇文章主要介绍了PHP程序中使用adodb连接不同金沙国际官网的代码实例,具体的用法示例中用switch语句写了一个汇总式的支持,需要的朋友可以参考下
    2015-12-12
  • wordpress网站转移到本地运行测试的方法

    wordpress网站转移到本地运行测试的方法

    这篇文章主要为大家详细介绍了wordpress网站转移到本地运行测试的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • 关于ThinkPhp 框架表单验证及ajax验证问题

    关于ThinkPhp 框架表单验证及ajax验证问题

    tp数据验证有两种方式,一种是静态方式,一种是动态方式,下面小编给大家带来了ThinkPhp 框架表单验证及ajax验证问题,感兴趣的朋友一起看看吧
    2017-07-07

最新评论