zoukankan      html  css  js  c++  java
  • 装饰器模式

    装饰器模式

    <?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();
  • 相关阅读:
    BZOJ2768: [JLOI2010]冠军调查
    BZOJ1532: [POI2005]Kos-Dicing
    BZOJ1106: [POI2007]立方体大作战tet
    BZOJ1132: [POI2008]Tro
    BZOJ3143: [Hnoi2013]游走
    BZOJ1108: [POI2007]天然气管道Gaz
    BZOJ1131: [POI2008]Sta
    BZOJ1391: [Ceoi2008]order
    BZOJ1116: [POI2008]CLO
    解析HTML、JS与PHP之间的数据传输
  • 原文地址:https://www.cnblogs.com/ikasa007/p/4425216.html
Copyright © 2011-2022 走看看