分类分类
更新时间:2026-09-29 18:03:53作者:zhao
定义:
装饰者模式就是不修改原类代码和继承的情况下动态扩展类的功能。传统的编程模式都是子类继承父类实现方法重载,使用装饰器模式,只需添加一个新的装饰器对象,更加灵活,避免类数量和层次过多。
角色:
Component(被装饰对象基类)
ConcreteComponent(具体被装饰对象)
Decorator(装饰者基类)
ContreteDecorator(具体的装饰者类)
示例代码:
//被装饰者基类
interface Component
{
public function operation();
}
//装饰者基类
abstract class Decorator implements Component
{
protected $component;
public function __construct(Component $component)
{
$this->component = $component;
}
public function operation()
{
$this->component->operation();
}
}
//具体装饰者类
class ConcreteComponent implements Component
{
public function operation()
{
echo 'do operation'.PHP_EOL;
}
}
//具体装饰类A
class ConcreteDecoratorA extends Decorator {
public function __construct(Component $component) {
parent::__construct($component);
}
public function operation() {
parent::operation();
$this->addedOperationA(); // 新增加的操作
}
public function addedOperationA() {
echo 'Add Operation A '.PHP_EOL;
}
}
//具体装饰类B
class ConcreteDecoratorB extends Decorator {
public function __construct(Component $component) {
parent::__construct($component);
}
public function operation() {
parent::operation();
$this->addedOperationB();
}
public function addedOperationB() {
echo 'Add Operation B '.PHP_EOL;
}
}
class Client {
public static function main() {
/*
do operation
Add Operation A
*/
$decoratorA = new ConcreteDecoratorA(new ConcreteComponent());
$decoratorA->operation();
/*
do operation
Add Operation A
Add Operation B
*/
$decoratorB = new ConcreteDecoratorB($decoratorA);
$decoratorB->operation();
}
}
Client::main();
相关
妖怪名单角色扮演13.64 Mv1.0.02026-09-29
下载可露优世界休闲益智790.16 Mv9.92.31.102026-09-29
下载OverPeak超人游戏角色扮演304.38 Mv0.62026-09-29
下载宇宙回形针休闲益智24.07 Mv2.1.282026-09-29
下载pvzrhlauncher启动器手游辅助91.98 Mv1.1.1-ci.5492026-09-29
下载玛雅纪元角色扮演884.12 Mv2.1.122026-09-29
下载倒水倒不停红包版休闲益智68.28 Mv1.0.42026-09-29
下载观心心理(心理成长服务)生活服务208.9 MBv2.0.42026-09-29
下载速查驾规(交通法规速查)生活服务91.6 MBv1.0.02026-09-29
下载高能及时导航2026官方最新版本生活服务68.8 MBv1.0.02026-09-29
下载AI语音智能帮手2026最新版本社交通讯83.0 MBv1.0.12026-09-29
下载Nuna智能吊坠APP(健康情绪助手)生活服务190.3 MBv3.8.02026-09-29
下载










