PHP設計模式系列 - 適配器_PHP教程

來源:互聯網
上載者:User
什麼是適配器:
適配器設計模式只是將某個對象的介面適配為另一個對象所期望的介面。

設計情景:
假如我們原始的有一個UserInfo的類,提供使用者資訊的類,早起設計該類的時候,只實現了一個getUserName擷取使用者名稱的方法。
我們的MyOldObject類中,將從UserInfo這個類中擷取使用者資訊,並且輸出使用者名稱
隨著時間的推移,我們舊的UserInfo這個類只提供的擷取使用者名稱的方法,已經沒法滿足需求,我們同時需要擷取使用者的年齡等資訊。
為了不改變原本UserInfo這個類,我們就繼承UserInfo,建立一個UserInfoAdapter類,實現getAge擷取年齡這樣的方法。
在我們的MyNewObject新的類中,我們執行個體化UserInfoAdapter,列印出使用者姓名和年齡。
這樣,隨著我們的擴充,我們沒有改變原先UserInfo這個類和使用這個類的介面,我們通過適配的方法,將UserInfo類擴充出來
代碼:UserInfo類,實現getUserName方法
[php]
//早期的一個使用者類,只實現擷取使用者名稱的方法
class UserInfo {

public function getUserName() {
return 'initphp';
}
}
代碼:MyOldObject類,從UserInfo類中擷取資訊,輸出使用者名稱
[php]
include_once("UserInfo.php");
class MyOldObject {
public function write() {
$UserInfo = new UserInfo;
echo $UserInfo->getUserName();
}
}
$a = new MyOldObject;
$a->write();
代碼:UserInfoAdapter類,隨著時間推移,項目需求在變化,UserInfo類無法滿足需求,我們做了UserInfo類的適配器,滿足新功能的需求
[php]
include_once("UserInfo.php");
class UserInfoAdapter extends UserInfo{

public function getUserAge() {
return 28;
}

public function getUser() {
return array(
'username' => $this->getUserName(),
'age' => $this->getUserAge()
);
}
}
代碼:MyNewObject類,新功能的類,需要列印出使用者年齡和姓名,UserInfo類無法滿足需求,需要調用UserInfoAdapter適配器這個類
[php]
include_once("UserInfoAdapter.php");
class MyNewObject {
public function write() {
$UserInfoAdapter = new UserInfoAdapter;
print_r($UserInfoAdapter->getUser());
}
}
$a = new MyNewObject;
$a->write();
作者:initphp

http://www.bkjia.com/PHPjc/478142.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/478142.htmlTechArticle什麼是適配器: 適配器設計模式只是將某個對象的介面適配為另一個對象所期望的介面。 設計情景: 假如我們原始的有一個UserInfo的類,提...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.