This article mainly briefly describes the decorator pattern in PHP design patterns. Interested friends can refer to it. I hope it will be helpful to everyone.
Definition:
The decorator pattern is the function of dynamically extending a class without modifying the original class code and inheritance. The traditional programming model is that subclasses inherit the parent class to implement method overloading. Using the decorator pattern, you only need to add a new decorator object, which is more flexible and avoids too many classes and layers.
Role:
Component (base class of decorated object)
ConcreteComponent (specific object to be decorated)
Decorator (base class of decorator)
ContreteDecorator (specific decorator class)
Sample code:
//被装饰者基类 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();
Summary: The above is the entire content of this article, I hope it can It will be helpful to everyone’s study.
Related recommendations:
php methods to operate MySQL database and session dialogue
php implements mysql database volume backup
The above is the detailed content of A brief introduction to the decorator pattern in PHP design patterns. For more information, please follow other related articles on the PHP Chinese website!