① 介面卡模式可以將截然不同的函式介面封裝成統一的 api
② 實際應用舉例:php 的資料庫操作有 mysql,mysqli,pdo 三種,可以用介面卡模式統一成一致。類似的場景還有 cache 介面卡,將 memcache,redis,file,apc 等不同的快取函式,統一成一致
**實現:
在 common 下建立 database 資料夾,建立三個 php 檔案來表示三種不同的資料庫操作函式:mysql.php,mysqli.php,pdo.php,這三個檔案都使用介面卡模式,在 common 下簡歷 idatabase.php,用來封裝介面:
在 common/database.php 中首先定義介面,用介面約定介面卡的行為:
idatabase.php
<?phpmysql.php:namespace common;
inte***ce
idatabase
<?php入口檔案 index.php:namespace common\database;
usecommon\idatabase;
class
mysql
implements
idatabase
function query($sql
)
function
close()
}
<?php頁面輸出(查詢結構):define('basedir',__dir__); //
定義根目錄常量
include basedir.'/common/loader.php';
spl_autoload_register('\\common\\loader::autoload');
$db = new common\database\mysql
();$conn = $db->connect('127.0.0.1', 'root', '', 'crm');
$res = $db->query('select uid from crm_user');
while($rows = mysql_fetch_assoc($res
))$db->close($conn);
268772view code268857
268858
268859
268860
268861
268862
268863
268864
268866
268867
268868
268869
268870
268871
268872
mysqli.php(mysqli 和 mysql 的函式很類似)
<?phppdo.phpnamespace common\database;
usecommon\idatabase;
class mysqli implements
idatabase
function query($sql
)
function
close()
}
<?phpnamespace common\database;
usecommon\idatabase;
class pdo implements
idatabase
function query($sql
)
function
close()
}
PHP 設計模式 筆記與總結(3)SPL 標準庫
spl 庫的使用 php 標準庫 1.splstack,splqueue,splheap,splfixedarray 等資料結構類 棧 splstack 先進後出的資料結構 index.php define basedir dir 定義根目錄常量 include basedir.common loa...
Java設計模式筆記(7)介面卡模式
介面卡模式定義 將乙個類的介面變成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。介面卡模式包含兩種,一種是類介面卡,另一種是物件介面卡。類介面卡是通過類的繼承實現的適配,而物件介面卡是通過物件間的關聯關係,組合關係實現的適配。二者在實際專案中都會經常用到,由...
PHP設計模式(介面卡模式)
設計動機 假如我們又這樣軟體系統,我們希望它能夠和乙個新的庫搭配使用,但是這個庫所提供的介面與我們的軟體系統不相容,我們不想改變現有 就能解決這個問題,怎麼辦?這個時候我們就需要將這個新的庫介面轉換成我們所需要的介面,這就是介面卡模式設計動機。模式定義 介面卡模式就是將乙個類的介面,轉換成客戶期望的...