介面卡設計模式只是將某個物件的介面適配為另乙個物件所期望的介面。假如我們原始的有乙個userinfo的類,提供使用者資訊的類,早起設計該類的時候,只實現了乙個getusername獲取使用者名稱的方法。
我們的myoldobject類中,將從userinfo這個類中獲取使用者資訊,並且輸出使用者名稱
隨著時間的推移,我們舊的userinfo這個類只提供的獲取使用者名稱的方法,已經沒法滿足需求,我們同時需要獲取使用者的年齡等資訊。
為了不改變原本userinfo這個類,我們就繼承userinfo,建立乙個userinfoadapter類,實現getage獲取年齡這樣的方法。
在我們的mynewobject新的類中,我們例項化userinfoadapter,列印出使用者姓名和年齡。
這樣,隨著我們的擴充套件,我們沒有改變原先userinfo這個類和使用這個類的介面,我們通過適配的方法,將userinfo類擴充套件出來
[php]view plain
copy
print?
<?php
//早期的乙個使用者類,只實現獲取使用者名稱的方法
class
userinfo
}
[php]view plain
copy
print?
<?php
include_once
("userinfo.php"
);
class
myoldobject
} $a
= new
myoldobject;
$a->write();
[php]view plain
copy
print?
<?php
include_once
("userinfo.php"
);
class
userinfoadapter
extends
userinfo
public
function
getuser()
}
[php]view plain
copy
print?
<?php
include_once
("userinfoadapter.php"
);
class
mynewobject
} $a
= new
mynewobject;
$a->write();
參考:《php設計模式》aaron saray著
PHP設計模式系列(十二) 介面卡模式
介面卡模式包含如下角色 介面卡模式有物件介面卡和類介面卡兩種實現,但由於類介面卡模式通過多重繼承對乙個介面與另乙個介面進行匹配,而php並不支援多重繼承 儘管可以同時通過繼承類和介面的方式進行模擬多重繼承 也就是乙個類只有乙個父類,所以我們這裡實現的是物件介面卡。介面卡模式 target 目標抽象類...
設計模式系列 介面卡模式
見名知其意,介面卡可用於對多個不相容介面提供適配橋梁 介面卡模式屬於結構型模式。在現實世界中,這個模式適用的較為廣泛,比如 diy 一些電子產品,主要元器件提供的是標準介面,那麼無論我們購買什麼品牌的元器件,最終都能組裝起來正常執行。1 定義擴充套件介面和受支援的型別 public inte ce ...
PHP設計模式(介面卡模式)
設計動機 假如我們又這樣軟體系統,我們希望它能夠和乙個新的庫搭配使用,但是這個庫所提供的介面與我們的軟體系統不相容,我們不想改變現有 就能解決這個問題,怎麼辦?這個時候我們就需要將這個新的庫介面轉換成我們所需要的介面,這就是介面卡模式設計動機。模式定義 介面卡模式就是將乙個類的介面,轉換成客戶期望的...