适配器模式是将一个类的接口转换成客户目标所需要的接口使得原本不兼容的可以一起工作。像笔记本电源的适配器一样,为了调整电压能够让电脑使用。

每个框架里面对于数据库的操作都有许多方式,PDO,Mysqli,Mysql。但是他们都有个共同的接口。这就是采用适配器模式的原理。你不可能去改变底层让它适应所有的客户需求,只能通过适配器方式来实现。

申明共有接口:

interface Db {
public function insert();
public function find();
}

接口的不同实现:

class MysqliDriver implements Db{
public function insert()
{
    echo 'use mysqli insert'.'<br>';
}

public function find()
{
    echo 'use mysqli find'.'<br>';
}
}

class PDODriver implements Db{
public function insert()
{
    echo 'use PDO insert'.'<br>';
}

public function find()
{
    echo 'use PDO find'.'<br>';
}
}

适配器类(把原接口转换成目标接口):

class Adapter {

public function getInstance($sqltype)
{
    if ($sqltype === 'mysqli') {
        return new MysqliDriver();
    } elseif ($sqltype === 'PDO') {
        return new PDODriver();
    }
}
}

客户端代码:

$adpter = new Adapter();
$db = $adpter->getInstance('mysqli');
$db->insert();
$db->find();

结果:

use mysqli insert
use mysqli find