PHP 設計模式 筆記與總結(7)介面卡模式

2021-09-06 22:23:29 字數 1956 閱讀 8745

① 介面卡模式可以將截然不同的函式介面封裝成統一的 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

<?php 

namespace common;

inte***ce

idatabase

mysql.php:

<?php 

namespace common\database;

usecommon\idatabase;

class

mysql

implements

idatabase

function query($sql

)

function

close()

}

入口檔案 index.php:

<?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);

頁面輸出(查詢結構):

268772

268857

268858

268859

268860

268861

268862

268863

268864

268866

268867

268868

268869

268870

268871

268872

view code

mysqli.php(mysqli 和 mysql 的函式很類似)

<?php 

namespace common\database;

usecommon\idatabase;

class mysqli implements

idatabase

function query($sql

)

function

close()

}

pdo.php

<?php 

namespace 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設計模式(介面卡模式)

設計動機 假如我們又這樣軟體系統,我們希望它能夠和乙個新的庫搭配使用,但是這個庫所提供的介面與我們的軟體系統不相容,我們不想改變現有 就能解決這個問題,怎麼辦?這個時候我們就需要將這個新的庫介面轉換成我們所需要的介面,這就是介面卡模式設計動機。模式定義 介面卡模式就是將乙個類的介面,轉換成客戶期望的...