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

猜你喜欢

转载自blog.csdn.net/lihaoen666/article/details/84643846