欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP 设计模式系列 -- 委托模式( Delegation)

程序员文章站 2022-05-11 19:07:12
...

1、模式定义

委托是对一个类的功能进行扩展和复用的方法。它的做法是:写一个附加的类提供附加的功能,并使用原来的类的实例提供原有的功能。

假设我们有一个 TeamLead 类,将其既定任务委托给一个关联辅助对象 JuniorDeveloper 来完成:本来 TeamLead 处理 writeCode 方法,Usage 调用 TeamLead 的该方法,但现在 TeamLead 将 writeCode 的实现委托给 JuniorDeveloper 的 writeBadCode 来实现,但 Usage 并没有感知在执行 writeBadCode 方法。

2、UML类图

3、示例代码

Usage.php

writeCode();

TeamLead.php

slave = $junior;    }    /**     * TeamLead 喝咖啡, JuniorDeveloper 工作     * @return mixed     */    public function writeCode()    {        return $this->slave->writeBadCode();    }}

JuniorDeveloper.php

4、测试代码

Tests/DelegationTest.php

assertEquals($junior->writeBadCode(), $teamLead->writeCode());    }}