>백엔드 개발 >PHP 튜토리얼 >PHP 간단한 데코레이터 패턴 구현 코드

PHP 간단한 데코레이터 패턴 구현 코드

小云云
小云云원래의
2018-02-12 10:17:581358검색

이 글은 주로 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 디자인 패턴 중 데코레이터 패턴에 대한 자세한 설명

php 고급 객체 지향 디자인 패턴: 데코레이터 패턴


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

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