PHP設計模式(2)—— 介面卡模式

TimChen666發表於2018-11-30

介面

我們先來看看介面的作用


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();







轉載出處

http://larabase.com/collection/5/post/152

相關文章