PHP設計模式(2)—— 介面卡模式
阿新 • • 發佈:2018-12-01
介面
我們先來看看介面的作用
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();