《PHP学习:PHP设计模式之装饰者模式代码实例》要点:
本文介绍了PHP学习:PHP设计模式之装饰者模式代码实例,希望对您有用。如果有疑问,可以联系我们。
界说:PHP编程
装饰者模式就是不修改原类代码和继承的情况下动态扩展类的功能.传统的编程模式都是子类继承父类实现办法重载,使用装饰器模式,只需添加一个新的装饰器对象,更加灵活,避免类数量和层次过多.PHP编程
脚色:PHP编程
Component(被装饰工具基类)
ConcreteComponent(具体被装饰工具)
Decorator(装饰者基类)
ContreteDecorator(具体的装饰者类)PHP编程
示例代码:PHP编程
//被装饰者基类
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();
欢迎参与《PHP学习:PHP设计模式之装饰者模式代码实例》讨论,分享您的想法,维易PHP学院为您提供专业教程。