程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 裝飾器模式,裝飾模式

裝飾器模式,裝飾模式

編輯:關於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();

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved