装饰器模式
来源:互联网 发布:spss mac 编辑:程序博客网 时间:2024/06/07 09:35
1 <?php 2 //装饰器模式-在不改变原有类的结构上,对类的功能那个作补充 3 4 //武器基类 5 abstract class Weapon{ 6 abstract public function descriptions(); 7 abstract public function cost(); 8 } 9 10 //剑类11 class Glave extends Weapon{12 public function descriptions(){13 return 'Glave';14 }15 16 public function cost(){17 return "100";18 }19 }20 21 //匕首类22 class Knife extends Weapon{23 public function descriptions(){24 return __CLASS__;25 }26 public function cost(){27 return "80";28 }29 }30 31 //斧类32 class Axe extends Weapon{33 public function descriptions(){34 return __CLASS__;35 }36 public function cost(){37 return "200";38 }39 }40 41 //属性类42 class Property extends Weapon{43 protected $_weapon = null;44 protected $_price = 0;45 protected $_descriptions = '';46 public function __construct(Weapon $weapon){47 $this->_weapon = $weapon;48 }49 public function cost(){50 return $this->_weapon->cost() + $this->_price;51 }52 53 public function descriptions(){54 return $this->_weapon->descriptions().$this->_descriptions;55 }56 }57 58 //力量属性59 class Strength extends Property{60 protected $_price = 30;61 protected $_descriptions = '+ Strength';62 }63 64 //敏捷属性65 class Agility extends Property{66 protected $_price = 50;67 protected $_descriptions = '+ Agility';68 }69 70 //智力属性71 class Intellect extends Property{72 protected $_price = 20;73 protected $_descriptions = '+ Intellect';74 }75 76 $weapon = new Agility(new Strength(new Strength(new Glave())));77 echo $weapon->cost();78 echo $weapon->descriptions();
0 0
- c++装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器(Decorator)模式
- 装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器(Decorator)模式
- 浅谈装饰器模式
- java 装饰器模式
- 装饰器(Decorator)模式
- 装饰器模式
- 装饰器(Decorator)模式
- 装饰器模式
- 装饰器模式
- Windows下Nginx的启动、停止等命令
- 正确的注销PHP SESSION
- Java-回调(Callback)
- matlab中的kron函数
- IOS设置app图标未读消息个数
- 装饰器模式
- Struts2+jquery+Ajax实现json数据的传输
- poj------Questions
- Java finalize
- node-REPL 命令
- Flask web开发2----邮箱
- Android 清除缓存详细实现(显示缓存大小)
- 一张图看明白Hadoop企业产品定位
- Hadoop2.7.3 多台主机完全分布式搭建(Mac OS X 10.12.4系统 + Parallels Desktop 12 Pro Edition)