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();
  • 相关阅读:
    物料主档的屏幕增强
    删除请求号(网上转载)
    Echarts X轴内容过长自动隐藏,鼠标移动上去显示全部名称方法
    mscms学习
    java 基础(泛型)
    java 基础(枚举类)
    java 基础(抽象类)
    java 基础(单例)
    android项目杂记
    Android Studio--学习系列(3)发版
  • 原文地址:https://www.cnblogs.com/ikasa007/p/4425216.html
Copyright © 2011-2022 走看看