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
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!