PHP设计模式之装饰者模式:钢铁侠的战衣逐步升级

#钢铁战衣升级标准
interface DecorateArmor{
	public function generateWeapon();//生成新功能
}



#待装饰对象 Iron Man
Class IronMan implements DecorateArmor
{
	private $name;
	public function __construct($name)
	{
		$this->name = $name;
	}
	
	public function generateWeapon()
	{
		echo "I'm iron man ".$this->name."
"; echo "看我的钢铁战衣逐步更新:
"; echo '
'; } } #装饰品基类 Iron Armor class IronArmor implements DecorateArmor { private $component; public function __construct(DecorateArmor $component) { $this->component = $component; } public function generateWeapon() { $this->component->generateWeapon(); } } #Mark系列战甲 class Mark1 extends IronArmor { public function generateWeapon() { parent::generateWeapon(); echo '

Mark1 :

'; echo '一堆厚厚铁皮,一个火焰喷射器,一个推进器;
'; echo '
'; } } class Mark2 extends IronArmor { public function generateWeapon() { parent::generateWeapon(); echo '

Mark2 :

'; echo '第一个能够实现持续飞行的装甲,手部和靴子能同时释放电弧脉冲;
'; echo '高海拔地区会出现结冰现象;
'; echo '
'; } } class Mark3 extends IronArmor { public function generateWeapon() { parent::generateWeapon(); echo '

Mark3 :

'; echo '正式上色出征,定为著名的经典的红黄色;
'; echo '更换装甲材质完美解决结冰现象;
'; echo '装备自动瞄准系统,同时锁定多个目标使用双肩六管迷你炮解决目标;
'; echo '装甲手臂隐藏有微型导弹,配备诱弹,用于干热追踪导弹;
'; echo '
'; } } class Mark5 extends IronArmor { public function generateWeapon() { parent::generateWeapon(); echo '

Mark5 :

'; echo '应付突发事件而创造的便携装甲,可在任何地方组装,不用时可折叠成手提箱;
'; echo '只有单层设计,比较薄弱,除手掌心和胸部的脉冲炮外,没有配备其它武器;
'; echo '由一些未知金属组成而不是钛合金,攻击性较弱、防御等级低;
'; echo '
'; } } class Mark6 extends IronArmor { public function generateWeapon() { parent::generateWeapon(); echo '

Mark6 :

'; echo '第一个胸部配备三角形电弧脉冲炮的装甲,使用了振金弧反应堆;
'; echo '第一套可以进行水下作业的装甲;
'; echo '承受重击,吸收外部能量转化为装甲能量;
'; echo '
'; } } class Mark7 extends IronArmor { public function generateWeapon() { parent::generateWeapon(); echo '

Mark7 :

'; echo '激光制导跟踪快速部署系统,不需要任何外部的机械协助直接穿戴;
'; echo '
'; } } class Mark42 extends IronArmor { public function generateWeapon() { parent::generateWeapon(); echo '

Mark42 :

'; echo '具备了自动组装的能力,可远程操控和自动组装;
'; echo '由于自动组装省去了很多链接部件上的螺丝,容易撞坏;
'; echo '
'; } } class Mark44 extends IronArmor { public function generateWeapon() { parent::generateWeapon(); echo '

Mark44 :

'; echo '即反浩克装甲,专门用来对抗浩克;
'; echo '平时搭载在卫星(维罗妮卡)上,飞行于近地轨道,在使用的时候发射到需要的位置;
'; echo '体型十分巨大,甚至比浩克还要大一圈,可以将其他战甲包裹起来;
'; echo '采用组合结构附带一个飞行装备库,在损坏时,可将损坏的部位分离使用备用零件修复;
'; echo '
'; } } class Mark50 extends IronArmor { public function generateWeapon() { parent::generateWeapon(); echo '

Mark50 :

'; echo '全新采用纳米技术,一键战甲覆盖全身,可随处变出盾牌,大炮,手刀
'; echo '
'; } } $tonyStark = new IronMan('Tony Stark');//这里就只注入Tony Stark,无人可替代的钢铁侠 $mark1 = new Mark1($tonyStark); $mark2 = new Mark2($mark1); $mark3 = new Mark3($mark2); $mark5 = new Mark5($mark3); $mark6 = new Mark6($mark5); $mark7 = new Mark7($mark6); $mark42 = new Mark42($mark7); $mark44 = new Mark44($mark42); $mark50 = new Mark50($mark44); $mark50->generateWeapon();//开始战甲更新换代的表演

 

你可能感兴趣的:(PHP,设计模式)