이 기사에서는 특정 참조 가치가 있는 PHP 디자인 모드를 소개합니다. 이제 도움이 필요한 친구들이 참조할 수 있습니다.
Decorator 도 구조 모드에 속합니다. 하나, 정의: 동적으로 객체에 몇 가지 추가 책임을 추가합니다.
우리 생활에서 가장 흔한 예는 게임을 할 때 항상 함께하는 캐릭터의 장비와 스킨입니다. 남자아이, 여자아이 할 것 없이 게임을 하는 사람이라면 누구나 구매했을 거라 믿습니다.
가장 일반적인 것은 일부 게임 개발자가 무기, 옷, 신발, 반지 등과 같은 일부 장비를 만들어 플레이어가 착용하면 멋져 보일 뿐만 아니라 추가 속성도 가지고 있다는 것입니다.
이 예제는 일반적인 데코레이터 패턴을 적용한 것으로, 다른 클래스에 영향을 주지 않고 다른 특정 장비 클래스를 동적으로 추가하는 것이 특징입니다.
<?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 중국어 웹사이트의 기타 관련 기사를 참조하세요!