Maison > développement back-end > tutoriel php > 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

墨辰丷
Libérer: 2023-03-31 12:38:01
original
1823 Les gens l'ont consulté

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();
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal