>  기사  >  백엔드 개발  >  PHP 디자인 패턴 장식 모드

PHP 디자인 패턴 장식 모드

不言
不言원래의
2018-04-18 11:57:371215검색

이 기사에서는 특정 참조 가치가 있는 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 디자인 패턴 브리지 모드

PHP 디자인 패턴 어댑터 모드

위 내용은 PHP 디자인 패턴 장식 모드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.