Maison  >  Article  >  développement back-end  >  Une brève introduction au modèle décorateur dans les modèles de conception PHP

Une brève introduction au modèle décorateur dans les modèles de conception PHP

墨辰丷
墨辰丷original
2018-06-11 09:55:001750parcourir

Cet article décrit principalement brièvement le modèle de décorateur dans les modèles de conception PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Définition :

Le modèle de décorateur est la fonction d'étendre dynamiquement une classe sans modifier le code de classe d'origine ni l'héritage. Le modèle de programmation traditionnel est que les sous-classes héritent de la classe parent pour implémenter la surcharge de méthodes. En utilisant le modèle décorateur, il vous suffit d'ajouter un nouvel objet décorateur, qui est plus flexible et évite trop de classes et de couches.

Rôle :

Component (classe de base de l'objet décoré)
ConcreteComponent (objet spécifique à décorer)
Decorator (classe de base du décorateur)
ContreteDecorator (classe de décorateur spécifique)

Exemple de 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();

Résumé : Ce qui précède est l'intégralité du contenu de cet article, J'espère que cela sera utile à l'étude de chacun.

Recommandations associées :

Comment faire fonctionner la base de données MySQL et le dialogue de session avec php

Trois méthodes couramment utilisées en php Conseils pour parcourir l'arborescence

PHP implémente la sauvegarde du volume de la base de données MySQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn