The content of this article is about the decoration mode of PHP design mode. It has a certain reference value. Now I share it with you. Friends in need can refer to it
Decorator mode (Decorator) Also Belongs to one of the structural patterns. Definition: Dynamically adding some additional responsibilities to an object.
The most common example in our lives is the equipment and skins that accompany the character at any time when playing games. I believe that regardless of boys or girls, everyone who plays games has bought it.
The most common one is that some game developers make some equipment, such as weapons, clothes, shoes, rings, etc., to attract players to buy it. It not only looks good when worn, but also has a Extra attributes.
This example is an application of the typical decorator pattern, which is characterized by dynamically adding other specific equipment classes without affecting other 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();
Output result:
战士当前装备:龙泉剑 复活戒指 御风履
Related recommendations:
Combination mode of PHP design pattern
Bridge mode of PHP design pattern
##Adapter mode of PHP design pattern
The above is the detailed content of PHP design pattern decoration mode. For more information, please follow other related articles on the PHP Chinese website!