我在讀一本介紹適配器模式使用的書。它表示,在Web項目中經常使用適配器模式,作爲使用數據庫API(如PDO或mysqli)而不將頁面反覆連接到該數據庫API的方式。下面是示例代碼:不使用適配器接口的適配器模式?
interface DatabaseAdapterInterface
{
function setConnectionInfo($values=array());
function closeConnection();
function runQuery($sql, $parameters=array());
function fetchField($sql, $parameters=array());
function fetchRow($sql, $parameters=array());
function fetchAsArray($sql, $parameters=array());
function insert($tableName, $parameters=array());
function beginTransaction();
function commit();
function rollBack();
//many other methods
}
class DatabaseAdapterPDO implements DatabaseAdapterInterface
{
//implements all the methods in the DatabaseAdapterInterface
}
class DatabaseAdapterMySQLi implements DatabaseAdapterInterface
{
//...implements all the methods in the DatabaseAdapterInterface
}
任何客戶端類(或網頁),其 需要利用數據庫將通過具體的適配器,這樣做的:
$connect = array(DBCONNECTION, DBUSER, DBPASS);
$adapter = new DatabaseAdapterPDO($connect);
$sql = 'SELECT * FROM ArtWorks WHERE ArtWorkId=?';
$results = $adapter->runQuery($sql, array(5));
雖然此示例代碼中明確包含沒有PDO代碼,它不完全免費從依賴到我們的數據庫API的 。
我明白了,但我不知道爲什麼我們需要有DatabaseAdapterInterface?我們只需在DatabaseAdapterPDO和DatabaseAdapterMySQLi中定義所有的方法,而無需使用DatabaseAdapterInterface,我們可以節省一些編寫DatabaseAdapterInterface的代碼,我們可以嗎?或者使用DatabaseAdapterInterface可以強制程序員實現所需的方法,以便程序員不會錯過任何所需的方法?
'適配器模式經常用於Web項目中,作爲利用數據庫API(如PDO或mysqli)的一種方式,而不必將頁面反覆連接到數據庫API。「 - 這聽起來更像[外牆模式](https://en.wikipedia.org/wiki/Facade_pattern)。你能和我們分享這本書的參考嗎? – Fuhrmanator