Home > Backend Development > PHP Tutorial > PHP design pattern decorator pattern code example, php design pattern_PHP tutorial

PHP design pattern decorator pattern code example, php design pattern_PHP tutorial

WBOY
Release: 2016-07-13 09:54:26
Original
1084 people have browsed it

PHP design pattern decorator pattern code example, php design pattern

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.

Character:

Component (base class of decorated object)
ConcreteComponent (specific decorated object)
Decorator (decorator base class)
ContreteDecorator (concrete 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();
Copy after login

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/997909.htmlTechArticlePHP design pattern decorator pattern code example, php design pattern definition: Decorator pattern means not modifying the original class code And dynamically extend the functionality of the class in the case of inheritance. Traditional programming model...
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template