当前位置:Gxlcms > PHP教程 > 装饰器模式,装饰模式_PHP教程

装饰器模式,装饰模式_PHP教程

时间:2021-07-01 10:21:17 帮助过:19人阅读

装饰器模式,装饰模式


装饰器模式

php
//装饰器模式-在不改变原有类的结构上,对类的功能那个作补充

//武器基类
abstract class Weapon{
    abstract public function descriptions();
    abstract public function cost();
}

//剑类
class Glave extends Weapon{
    public function descriptions(){
        return 'Glave';
    }
    
    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 = '';
    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 = '+ Strength';
}

//敏捷属性
class Agility extends Property{
    protected $_price = 50;
    protected $_descriptions = '+ Agility';
}

//智力属性
class Intellect extends Property{
    protected $_price = 20;
    protected $_descriptions = '+ Intellect';
}

$weapon = new Agility(new Strength(new Strength(new Glave())));
echo $weapon->cost();
echo $weapon->descriptions();

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/983244.htmlTechArticle装饰器模式,装饰模式 装饰器模式 ? php // 装饰器模式-在不改变原有类的结构上,对类的功能那个作补充//武器基类 abstract class Weapon{ abst...

人气教程排行