接口
我们先来看看接口的作用
interface Database{
public function connect();
public function query();
public function close();
}
class Mysql implements Database{
public function connect(){
//mysql 的逻辑
};
public function query(){
//mysql 的逻辑
};
public function close(){
//mysql 的逻辑
};
}
class Pdo implements Database{
public function connect(){
//Pdo 的逻辑
};
public function query(){
//Pdo 的逻辑
};
public function close(){
//Pdo 的逻辑
};
}
//使用
$database = new Mysql(); //切换数据库只要改这一行就行了
$database->connect();
$database->query();
$database->close();
问题
有些第三方的 数据库类并没有按照我的接口来实现,而是有自己不同的方法,这个时候我们就需要有一个适配器类,来先处理一下这个异类。 作用有点像把110v电源转换成为220v(电源适配器)。
//第三方数据库类
class Oracle {
public function oracleConnect(){
//Oracle 的逻辑
};
public function oracleQuery(){
//Oracle 的逻辑
};
public function oracleClose(){
//Oracle 的逻辑
};
}
适配器模式
$adaptee = new Oracle();
$adapter = new Adapter($adaptee);//只要改这个类就行了,后面的都可以不用改;
$database = $adapter;
$database->connect();
$database->query();
$database->close();