Maison  >  Article  >  développement back-end  >  Explication détaillée du modèle de décorateur des modèles de conception PHP

Explication détaillée du modèle de décorateur des modèles de conception PHP

韦小宝
韦小宝original
2017-11-15 09:51:241985parcourir

Module DécorateurModule peut ajouter et modifier dynamiquement la fonction d'une classe. Chaque classe fournit une fonction. Si vous souhaitez modifier et ajouter des fonctions supplémentaires, la programmation traditionnelle consiste à le faire. écrire une sous-classe pour en hériter et réimplémenter la méthode de classe, en utilisant le modèle de décorateur, et il suffit d'ajouter un décorateurObject peut être mis en œuvre pour obtenir une flexibilité maximale

Explication détaillée du modèle de décorateur des modèles de conception PHP

<?php

/*
 * 装饰模式
 */

abstract class Beverage
{
    public $_name;

    abstract public function Cost();
}

// 被装饰者类
class Coffee extends Beverage
{
    public function construct()
    {
        $this->_name = &#39;Coffee&#39;;
    }

    public function Cost()
    {
        return 1.00;
    }
}

// 以下三个类是装饰者相关类
class CondimentDecorator extends Beverage //装饰类
{
    public function construct()
    {
        $this->_name = &#39;Condiment&#39;;
    }

    public function Cost()
    {
        return 0.1;
    }
}

class Milk extends CondimentDecorator //牛奶 配料 --装饰者
{
    public $_beverage;

    public function construct($beverage)
    {
        if ($beverage instanceof Beverage) {
            $this->_beverage = $beverage;
        } else
            exit(&#39;Failure&#39;);
    }

    public function Cost()
    {
        return $this->_beverage->Cost() + 0.2;
    }
}

class Sugar extends CondimentDecorator //糖 配料 --装饰者
{
    public $_beverage;

    public function construct($beverage)
    {
        $this->_name = &#39;Sugar&#39;;
        if ($beverage instanceof Beverage) {
            $this->_beverage = $beverage;
        } else {
            exit(&#39;Failure&#39;);
        }
    }

    public function Cost()
    {
        return $this->_beverage->Cost() + 0.2;
    }
}

// Test Case
//1.拿杯咖啡
$coffee = new Coffee();

//2.加点牛奶
$coffee = new Milk($coffee);

//3.加点糖
$coffee = new Sugar($coffee);

echo $coffee->Cost();
echo $coffee->_name;
Le mode de décoration réduit le couplage du système et peut ajouter ou supprimer dynamiquement les responsabilités des objets, et permet au composant spécifique les classes et les classes de décoration spécifiques qui doivent être décorées doivent être modifiées indépendamment, afin que de nouvelles classes de composants spécifiques et des classes de décoration spécifiques puissent être ajoutées

Recommandations associées :

Exemple de code détaillé du mode de décoration PHP

Mode de décoration PHP

Facile à comprendre le modèle singleton du modèle de conception PHP

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