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();
  • 相关阅读:
    Git轻松入门3:远程仓库篇
    Git轻松入门2:分支篇
    Git轻松入门1:本地仓库篇
    通俗易懂的解释:什么是API
    小白都看得懂的Javadoc使用教程
    尾调用与尾递归
    要理解递归就要先理解递归:手把手教你写递归
    不复杂的空间复杂度
    不复杂的时间复杂度
    Java程序执行过程及内存机制
  • 原文地址:https://www.cnblogs.com/ikasa007/p/4425216.html
Copyright © 2011-2022 走看看