PHP设计模式:装饰模式

本文介绍装饰模式的概念及其在PHP中的实现。装饰模式允许在不改变对象结构的前提下动态地给对象添加新的职责,通过组合而非继承来扩展功能。文章通过具体的PHP代码示例展示了如何使用装饰模式来增强对象的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

装饰模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活

装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

装饰模式是为已有功能动态的添加更多功能的一种方式。当系统需要新功能时,向旧的类中添加新的代码。这些新加的代码通常装饰了原有类的核心职责或主要行为。

<?php

//Component是定义一个对象接口,可以给这些对象动态的添加职责
abstract class Component {
    public abstract function operation();
}

class ConcreteComponent extends Component {
    public function operation() {
        echo '具体对象的操作:<br/>';
    }

}

class Decorator extends Component {
    public $component;

    public function __construct($component) {
        $this->component = $component;
    }

    public function operation() {
        $this->component->operation();
    }
}

class DecoratorA extends Decorator {
    public function operation() {
        parent::operation();
        echo 'A<br/>';       
    }
}

class DecoratorB extends Decorator {
    public function operation() {
        parent::operation();
        echo 'B<br/>';
    }
}

class DecoratorC extends Decorator {
    public function operation() {
        parent::operation();
        echo 'C<br/>';
    }
}

/*
 * 输出结果:
具体对象的操作:
A
B
C
 */
$component = new ConcreteComponent();
$a = new DecoratorA($component);
$b = new DecoratorB($a);
$c = new DecoratorC($b);
$c->operation();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值