PHP头条
热点:

装饰器模式,装饰模式


装饰器模式

<?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.phpzy.comtrue/php/35656.htmlTechArticle装饰器模式,装饰模式 装饰器模式 ? php // 装饰器模式-在不改变原有类的结构上,对类的功能那个作补充//武器基类 abstract class Weapon{ abstract public function descriptions(); abstract public functio...

相关文章

    暂无相关文章

PHP之友评论

今天推荐