この記事では、特定の参考値を持つ PHP デザイン モードの装飾モードを紹介します。必要な友達はそれを参照できます
デコレーター も構造モードに属します。 1 つ目は、動的にです。オブジェクトに追加の責任を追加します。 私たちの生活の中で最も一般的な例は、ゲームをプレイするときに常に同行するキャラクターの装備とスキンです。男の子も女の子も関係なく、ゲームをする人なら誰もが買ったことがあると思います。最も一般的なのは、一部のゲーム開発者がプレイヤーに購入を促すために、武器、服、靴、指輪などの装備を作成することです。これらの装備は、着用すると見た目が良いだけでなく、追加の属性も備えています。
この例は、他のクラスに影響を与えることなく、他の特定の機器クラスを動的に追加することを特徴とする典型的なデコレータパターンの応用です<?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();
战士当前装备:龙泉剑 复活戒指 御风履
PHP デザイン パターン コンビネーション モード
以上がPHPデザインパターン装飾モードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。