定义:可以将截然不同的函数接口封装成统一的API
实际应用举例:1.PHP的数据库有mysql,mysqli,pdo3种,可以用适配器模式统一成一致
2.cache适配器,将memcache,redis,file,apc等不同的缓存函数,统一成一致
以实际应用举例1作为示例
$db = new IMooc\Database\MySQL();//$db = new IMooc\Database\MySQLi();//$db = new IMooc\Database\PDO();$db->connect(‘127.0.0.1‘, ‘root‘, ‘root‘, ‘test‘);$db->query("show databases");$db->close();<?phpnamespace IMooc; interface IDatabase{ function connect($host, $user, $passwd, $dbname); function query($sql); function close();}<?phpnamespace IMooc\Database; use IMooc\IDatabase; class MySQL implements IDatabase{ protected $conn; function connect($host, $user, $passwd, $dbname) { $conn = mysql_connect($host, $user, $passwd); mysql_select_db($dbname, $conn); $this->conn = $conn; } function query($sql) { $res = mysql_query($sql, $this->conn); return $res; } function close() { mysql_close($this->conn); }}<?phpnamespace IMooc\Database; use IMooc\IDatabase; class MySQLi implements IDatabase{ protected $conn; function connect($host, $user, $passwd, $dbname) { $conn = mysqli_connect($host,$user,$passwd,$dbname); $this->conn = $conn; } function query($sql) { return mysqli_query($this->conn, $sql); } function close() { mysqli_close($this->conn); }}<?phpnamespace IMooc\Database; use IMooc\IDatabase; class PDO implements IDatabase{ protected $conn; function connect($host, $user, $passwd, $dbname) { $conn = new \PDO("mysql:host=$host;dbname=$dbname", $user, $passwd); $this->conn = $conn; } function query($sql) { return $this->conn->query($sql); } function close() { unset($this->conn); }}
时间: 2024-12-13 21:14:41