1.适配器模式,可以将不同的函数接口封装成统一的api
2.实际应用举例:php的数据库操作有mysql、mysqli、pdo等,可以用适配器模式统一成一致的适配器调用。
类似的场景还有cache适配器,将memcached、redis、file、apc等不同的缓存函数
3.适配器步骤:一个统一定义函数的接口文件、不同具体实现步骤的多个文件
4.代码实例:
1个统一定义函数的接口文件:/db.php(为了统一化要求是接口,使用抽象类也是可以的)
3个不同具体实现步骤的数据库操作文件:/Database/MySQL.php、/Database/MySQLi.php、/Database/PDO.php
接口文件:db.php 代码如下:
interface db {
public function connect( $host, $user, $passwd, $dbName, $port = 3306 );
public function query($sql);
public function close();
}
具体操作文件MySQL.php,代码如下:(其他的两个文件的方法只是具体实现不同而已)
class MySQL implements db {
private $_conn;
public function connect( $host, $user, $passwd, $dbName, $port = 3306 ){
$this->_conn = mysql_connect($host, $user, $passwd);
mysql_select_db( $dbName, $this->_conn );
}
public function query($sql){
return mysql_query($sql);
}
public function close(){
mysql_close($this->_conn);
return true;
}
}
ps:通过定义统一的接口,具体实现的类来集成接口,使用统一的调用函数
对于适配器,具体的一个延伸实例,举例thinkphp框架中的数据库操作实现,也是使用了适配器模式,不过该适配器不是接口,而是抽象类,使用抽象类作为适配器的
好处是能够让具体的类能够重写适配器里面的方法,同时使用了一个中间层类,来根据配置决定使用哪个具体数据库类型
1.中间层类
2.数据库抽象类
3.具体数据库类,该类集成了2中的所有方法,同时也重写了部分方法