适配器模式

1.适配器模式,可以将不同的函数接口封装成统一的api

 

2.实际应用举例:php的数据库操作有mysql、mysqli、pdo等,可以用适配器模式统一成一致的适配器调用。

  类似的场景还有cache适配器,将memcached、redis、file、apc等不同的缓存函数

 

3.适配器步骤:一个统一定义函数的接口文件、不同具体实现步骤的多个文件

 

4.代码实例:

  1个统一定义函数的接口文件:/db.php(为了统一化要求是接口,使用抽象类也是可以的

  3个不同具体实现步骤的数据库操作文件:/Database/MySQL.php、/Database/MySQLi.php、/Database/PDO.php

 

 

  接口文件:db.php  代码如下:

  interface db {

    public function connect( $host, $user, $passwd, $dbName, $port = 3306 );

    public function query($sql);

    public function close();

  }

 

 

  具体操作文件MySQL.php,代码如下:(其他的两个文件的方法只是具体实现不同而已)

  class MySQL implements db {

 

    private $_conn;

 

    public function connect( $host, $user, $passwd, $dbName, $port = 3306 ){

        $this->_conn = mysql_connect($host, $user, $passwd);

        mysql_select_db( $dbName, $this->_conn );

 

    }

 

    public function query($sql){

        return mysql_query($sql);

    }

 

    public function close(){

        mysql_close($this->_conn);

        return true;

    }

  } 

 

  ps:通过定义统一的接口,具体实现的类来集成接口,使用统一的调用函数

 

  对于适配器,具体的一个延伸实例,举例thinkphp框架中的数据库操作实现,也是使用了适配器模式,不过该适配器不是接口,而是抽象类,使用抽象类作为适配器的

  好处是能够让具体的类能够重写适配器里面的方法,同时使用了一个中间层类,来根据配置决定使用哪个具体数据库类型

  1.中间层类

  2.数据库抽象类

  3.具体数据库类,该类集成了2中的所有方法,同时也重写了部分方法

 

 

你可能感兴趣的:(适配器模式)