PHP 데코레이터 패턴의 구현 및 사용법에 대한 자세한 설명

墨辰丷
풀어 주다: 2023-03-27 07:54:01
원래의
1612명이 탐색했습니다.

이 글은 주로 PHP 단순 데코레이터 패턴의 구현 및 사용법을 소개하고, PHP 데코레이터 패턴의 원리, 구현 및 사용법을 구체적인 예를 통해 분석합니다. 도움이 필요한 친구들은 참고할 수 있습니다

자세한 내용은 다음과 같습니다.

<?php
//装饰器模式-在不改变原有类的结构上,对类的功能那个作补充
//武器基类
abstract class Weapon{
  abstract public function descriptions();
  abstract public function cost();
}
//剑类
class Glave extends Weapon{
  public function descriptions(){
    return &#39;Glave&#39;;
  }
  public function cost(){
    return "100";
  }
}
//匕首类
class Knife extends Weapon{
  public function descriptions(){
    return __CLASS__;
  }
  public function cost(){
    return "80";
  }
}
//斧类
class Axe extends Weapon{
  public function descriptions(){
    return __CLASS__;
  }
  public function cost(){
    return "200";
  }
}
//属性类
class Property extends Weapon{
  protected $_weapon = null;
  protected $_price = 0;
  protected $_descriptions = &#39;&#39;;
  public function __construct(Weapon $weapon){
    $this->_weapon = $weapon;
  }
  public function cost(){
    return   $this->_weapon->cost() + $this->_price;
  }
  public function descriptions(){
    return $this->_weapon->descriptions().$this->_descriptions;
  }
}
//力量属性
class Strength extends Property{
  protected $_price = 30;
  protected $_descriptions = &#39;+ Strength&#39;;
}
//敏捷属性
class Agility extends Property{
  protected $_price = 50;
  protected $_descriptions = &#39;+ Agility&#39;;
}
//智力属性
class Intellect extends Property{
  protected $_price = 20;
  protected $_descriptions = &#39;+ Intellect&#39;;
}
$weapon = new Agility(new Strength(new Strength(new Glave())));
echo $weapon->cost();
echo $weapon->descriptions();
로그인 후 복사

관련 추천:

PHP데코레이터모드 사용에 대한 자세한 설명

PHP데코레이터모드 사용 사례 분석

Pythondesignator원리 및 사용 분석

위 내용은 PHP 데코레이터 패턴의 구현 및 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿