Home >Backend Development >PHP Tutorial >A brief introduction to the decorator pattern in PHP design patterns

A brief introduction to the decorator pattern in PHP design patterns

墨辰丷
墨辰丷Original
2018-06-11 09:55:001834browse

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

Three commonly used methods in php Techniques for traversing the tree

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn