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();
ログイン後にコピー

関連する推奨事項:

PHPdecoratorモードの使用方法の詳細な説明

PHPdecoratorモードのユースケース分析

Pythonデコレータ原理と使用法の分析

以上がPHPデコレータパターンの実装と使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート