php設計模式介面卡模式

2021-09-07 17:29:35 字數 2752 閱讀 9189

介面卡模式(有時候也稱包裝樣式或者包裝)將乙個類的介面適配成使用者所期待的。乙個適配允許通常因為介面不相容而不能在一起工作的類工作在一起。

其實就是通過乙個轉換類,這個轉換類裡面有乙個方法,我們用這個轉換方法原來的介面轉換成需要的介面

角色

如程式資料庫有關聯mysql、mysqli、pdo、sqlite、postgresql等操作,而你需要根據情況換資料庫操作時,可以使用介面卡模式統一介面,這樣**中除了資料庫配置之外,就不需要做而外的更改。

同理cache(快取)的場景也是,無論使用memcache還是redis等,在更換的時候都會很方便,節約時間。

:在一些流行框架中都可以看到此模式,詳情請自行參閱框架原始碼。

1

<?php

2header('content-type:text/html;charset=utf-8');3/*

*4* 介面卡模式演示**

5* target適配目標: idatabase介面

6* adaptee被適配者: mysql和mysql_i、postgresql的資料庫操作函式

7* adapter介面卡 :mysql類和mysql_i、postgresql類8*/

910/**

11* inte***ce idatabase 適配目標,規定的介面將被適配物件實現

12* 約定好統一的api行為

13*/

14inte***ce

idatabase

1523

24/**25

* class mysql 介面卡

26*/

27class

mysql

implements

idatabase

2846

47/**48

* 實現查詢方法49*

50* @param $sql 需要被查詢的sql語句

51* @return mi

52*/

53public

function query($sql)54

5758

//實現關閉方法

59public

function

close()

6063}64

65/**66

* class mysql 介面卡

67*/

68class mysql_i implements

idatabase

6986

87/**88

* 實現查詢方法89*

90* @param $sql 需要被查詢的sql語句

91*/

92public

function query($sql)93

9697

//實現關閉

98public

function

close()

99102

}103

104/*

*105

* class postgresql 介面卡

106*/

107class postgresql implements

idatabase

108124

125/*

*126

* 實現查詢方法

127*

128* @param $sql 需要被查詢的sql語句

129*/

130public

function query($sql

)131

134135

//實現關閉方法

136public

function

close()

137140

}141

142143/**

144* 客戶端使用演示

145* 這裡以mysql為例

146* 只要模式設計好,不論有多少種資料庫,實現和呼叫方式都是一樣的

147* 因為都是實現的同乙個介面,所以都是可以隨意切換的

148*/

149150

$host = 'localhost';

151$username = 'root';

152$password = 'root';

153$database = 'mysql';

154155

//$client = new postgresql();

156//$client = new mysql();

157$client = new

mysql_i();

158$client->connect($host, $username, $password, $database

);159

$result = $client->query("select * from db");

160while ($rows = mysqli_fetch_array($result

)) 163

$client->close();

執行結果:

1

array(44)

從以上結果可看出,資料庫連線以及查詢語句都已經執行成功。

PHP設計模式(介面卡模式)

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

PHP設計模式 介面卡模式

宣告 本系列部落格參考資料 大話設計模式 作者程杰。介面卡模式 有時候也稱包裝樣式或者包裝 將乙個類的介面適配成使用者所期待的 介面卡模式要解決的核心問題 乙個適配允許通常因為介面不相容而不能在一起工作的類工作在一起,做法是將類自己的介面包裹在乙個已存在的類中。類圖 待適配 foreignplaye...

設計模式 介面卡模式 類介面卡 物件介面卡

乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...