設計動機
假如我們又這樣軟體系統,我們希望它能夠和乙個新的庫搭配使用,但是這個庫所提供的介面與我們的軟體系統不相容,我們不想改變現有**就能解決這個問題,怎麼辦?這個時候我們就需要將這個新的庫介面轉換成我們所需要的介面,這就是介面卡模式設計動機。
模式定義
介面卡模式就是將乙個類的介面,轉換成客戶期望的另乙個介面。介面卡讓原本介面不相容的類可以合作無間。
在介面卡模式中,我們可以定義乙個包裝類,包裝不相容介面的物件,這個包裝類就是介面卡,它所包裝的物件就是適配者。
介面卡提供給客戶需要的介面,介面卡的實現就是將客戶的請求轉換成對適配者的相應的介面的引用。也就是說,當客戶呼叫介面卡的方法時,介面卡方法內部將呼叫適配者的方法,客戶並不是直接訪問適配者的,而是通過呼叫介面卡方法訪問適配者。因為介面卡可以使互不相容的類能夠「合作愉快」。
**實現
1. 首先我們定義乙個資料庫操作對外,公用的api介面,裡面主要設計了connect() query() close() 方法。
<?php
namespace
imooc;
inte***ce
idatabase
2. 使用mysql實現
<?php
namespace
imooc\database;
useimooc\idatabase;
class
mysql
implements
idatabase
function
query
($sql)
function
close
()
}
3. 使用mysqli實現
<?php
namespace
imooc\database;
useimooc\idatabase;
class
mysqli
implements
idatabase
function
query
($sql)
function
close
()
}
4. 使用pdo實現
<?php
namespace
imooc\database;
useimooc\idatabase;
class
pdoimplements
idatabase
function
query
($sql)
function
close
()
}
php設計模式介面卡模式
介面卡模式 有時候也稱包裝樣式或者包裝 將乙個類的介面適配成使用者所期待的。乙個適配允許通常因為介面不相容而不能在一起工作的類工作在一起。其實就是通過乙個轉換類,這個轉換類裡面有乙個方法,我們用這個轉換方法將原來的介面轉換成需要的介面 角色 如程式資料庫有關聯mysql mysqli pdo sql...
PHP設計模式 介面卡模式
宣告 本系列部落格參考資料 大話設計模式 作者程杰。介面卡模式 有時候也稱包裝樣式或者包裝 將乙個類的介面適配成使用者所期待的 介面卡模式要解決的核心問題 乙個適配允許通常因為介面不相容而不能在一起工作的類工作在一起,做法是將類自己的介面包裹在乙個已存在的類中。類圖 待適配 foreignplaye...
設計模式 介面卡模式 類介面卡 物件介面卡
乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...