Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Designmuster-Dekorationsmodus

PHP-Designmuster-Dekorationsmodus

不言
不言Original
2018-04-18 11:57:371161Durchsuche

Dieser Artikel stellt den Dekorationsmodus des PHP-Designmodus vor, der einen gewissen Referenzwert hat. Jetzt können Freunde in Not darauf verweisen

Dekorateur Auch gehört zu einem der Strukturmuster Definition: Dynamisches Hinzufügen einiger zusätzlicher Verantwortlichkeiten zu einem Objekt.

Das häufigste Beispiel in unserem Leben sind die Ausrüstung und Skins, die den Charakter jederzeit beim Spielen begleiten. Ich glaube, egal ob Jungen oder Mädchen, jeder, der Spiele spielt, hat es gekauft.

Am häufigsten stellen einige Spieleentwickler bestimmte Ausrüstungsgegenstände wie Waffen, Kleidung, Schuhe, Ringe usw. her, um Spieler zum Kauf zu bewegen. Sie sehen nicht nur gut aus, wenn sie getragen werden. hat aber auch ein Extra-Attribut.

Dieses Beispiel ist eine Anwendung des typischen Dekoratormusters, das durch das dynamische Hinzufügen anderer spezifischer Ausrüstungsklassen gekennzeichnet ist, ohne andere Klassen zu beeinflussen

<?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();



Ausgabeergebnis:


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

Verwandte Empfehlungen:

Kompositionsmodus des PHP-Entwurfsmusters

Bridge-Modus des PHP-Entwurfsmusters

Adaptermodus des PHP-Entwurfsmusters

Das obige ist der detaillierte Inhalt vonPHP-Designmuster-Dekorationsmodus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn