Maison  >  Article  >  développement back-end  >  Mode de décoration du modèle de conception PHP

Mode de décoration du modèle de conception PHP

不言
不言original
2018-04-18 11:57:371215parcourir

Cet article présente le mode décoration du mode conception PHP, qui a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Décorateur Aussi appartient à l'un des modèles structurels Définition : Ajout dynamique de responsabilités supplémentaires à un objet.

L'exemple le plus courant dans nos vies est l'équipement et les skins qui accompagnent le personnage à tout moment lorsqu'il joue à des jeux. Je crois que, garçons ou filles, tous ceux qui jouent à des jeux l'ont acheté.

Le plus courant est que certains développeurs de jeux fabriquent certains équipements, tels que des armes, des vêtements, des chaussures, des bagues, etc., pour inciter les joueurs à les acheter. mais possède également des attributs supplémentaires.

Cet exemple est une application du modèle de décorateur typique, qui se caractérise par l'ajout dynamique d'autres classes d'équipement spécifiques sans affecter les autres classes

<?php  
           
/** 构件接口类      
 *  interface IComponent          
 */     
interface IComponent  
{  
    function Display();  
}  
  
/** 人物类     
 *  Person         
 */    
Class Person implements IComponent  
{  
    private $name;  
  
    function __construct($name)  
    {  
        $this->name = $name;  
    }  
  
    function Display()  
    {  
        echo "{$this->name}当前装备:";  
    }  
  
}  
  
/** 装备类    
 *  Equipment         
 */   
Class Equipment implements IComponent  
{  
    protected $component;  
  
    function Decorator(IComponent $component)  
    {  
        // 动态添加  
        $this->component = $component;  
    }  
  
    function Display()  
    {  
        if(!empty($this->component)){  
            $this->component->Display();  
        }  
    }     
}  
  
  
/** 具体装备 武器类    
 *  Weapon        
 */   
Class Weapon extends Equipment  
{  
    function Display(){  
        parent::Display();  
        echo "龙泉剑 ";  
    }  
}  
  
/** 具体装备 戒指类    
 *  Ring        
 */   
Class Ring extends Equipment  
{  
    function Display(){  
        parent::Display();  
        echo "复活戒指 ";  
    }  
}  
  
/** 具体装备 鞋子类    
 *  Shoes       
 */   
Class Shoes extends Equipment  
{  
    function Display(){  
        parent::Display();  
        echo "御风履 ";  
    }  
}  
  
// 如果需要可以继续添加具体的装备 腰带 裤子 手镯
<?php  
  
// 装饰器模式 index.php  
header("Content-Type:text/html;charset=utf-8");  
require_once "Decorator.php";  
  
// 创建人物  
$people = new Person("战士");  
  
// 武器  
$Weapon = new Weapon();  
// 戒指  
$Ring = new Ring();  
// 鞋子  
$Shoes = new Shoes();  
  
// 动态添加函数  
$Weapon->Decorator($people);  
$Ring->Decorator($Weapon);  
$Shoes->Decorator($Ring);  
  
// 显示  
$Shoes->Display();



Résultat de sortie :


战士当前装备:龙泉剑 复活戒指 御风履
Recommandations associées :

Mode de composition du modèle de conception PHP

Mode pont du modèle de conception PHP

Mode adaptateur 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