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();
  • 相关阅读:
    微信 ios端config配置失败 android端正常
    vscode离线安装插件
    win7中vscode会黑屏或者终端空白,无法输入
    vue中使用svg图片
    a.download下载文件 ---跨域问题
    background 背景图片 --css3
    box-shadow
    兄弟伪类
    canvas画时钟
    轮播图--使用原生js的轮播图
  • 原文地址:https://www.cnblogs.com/ikasa007/p/4425216.html
Copyright © 2011-2022 走看看