php委托模式,PHP设计模式 - 委托模式
【一】模式定義
委托是對一個類的功能進行擴展和復用的方法。它的做法是:寫一個附加的類提供附加的功能,并使用原來的類的實例提供原有的功能。
假設我們有一個 TeamLead 類,將其既定任務委托給一個關聯輔助對象 JuniorDeveloper 來完成:本來 TeamLead 處理 writeCode 方法,Usage 調用 TeamLead 的該方法,但現在 TeamLead 將 writeCode 的實現委托給 JuniorDeveloper 的 writeBadCode 來實現,但 Usage 并沒有感知在執行 writeBadCode 方法。
【二】UML類圖
【三】示例代碼
Usage.php
namespace?DesignPatterns\More\Delegation;
//?初始化?TeamLead?并委托輔助者?JuniorDeveloper
$teamLead?=?new?TeamLead(new?JuniorDeveloper());
//?TeamLead?將編寫代碼的任務委托給?JuniorDeveloper
echo?$teamLead->writeCode();
TeamLead.php
namespace?DesignPatterns\More\Delegation;
/**
*?TeamLead類
*?@package?DesignPatterns\Delegation
*?`TeamLead`?類將工作委托給?`JuniorDeveloper`
*/
class?TeamLead
{
/**?@var?JuniorDeveloper?*/
protected?$slave;
/**
*?在構造函數中注入初級開發者JuniorDeveloper
*?@param?JuniorDeveloper?$junior
*/
public?function?__construct(JuniorDeveloper?$junior)
{
$this->slave?=?$junior;
}
/**
*?TeamLead?喝咖啡,?JuniorDeveloper?工作
*?@return?mixed
*/
public?function?writeCode()
{
return?$this->slave->writeBadCode();
}
}
JuniorDeveloper.php
namespace?DesignPatterns\More\Delegation;
/**
*?JuniorDeveloper?類
*?@package?DesignPatterns\Delegation
*/
class?JuniorDeveloper
{
public?function?writeBadCode()
{
return?"Some?junior?developer?generated?code...";
}
}
【四】測試代碼
Tests/DelegationTest.php
namespace?DesignPatterns\More\Delegation\Tests;
use?DesignPatterns\More\Delegation;
/**
*?DelegationTest?用于測試委托模式
*/
class?DelegationTest?extends?\PHPUnit_Framework_TestCase
{
public?function?testHowTeamLeadWriteCode()
{
$junior?=?new?Delegation\JuniorDeveloper();
$teamLead?=?new?Delegation\TeamLead($junior);
$this->assertEquals($junior->writeBadCode(),?$teamLead->writeCode());
}
}
總結
以上是生活随笔為你收集整理的php委托模式,PHP设计模式 - 委托模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java配置多数据源access,jav
- 下一篇: php orm url,PHP ORM使