1. 程式人生 > >PHP設計模式(2)—— 介面卡模式

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


介面

我們先來看看介面的作用


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