#钢铁战衣升级标准
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."<br>";
echo "看我的钢铁战衣逐步更新:<br>";
echo '<hr>';
}
}
#装饰品基类 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 '<h4>Mark1 : </h4>';
echo '一堆厚厚铁皮,一个火焰喷射器,一个推进器;<br>';
echo '<hr>';
}
}
class Mark2 extends IronArmor
{
public function generateWeapon()
{
parent::generateWeapon();
echo '<h4>Mark2 : </h4>';
echo '第一个能够实现持续飞行的装甲,手部和靴子能同时释放电弧脉冲;<br>';
echo '高海拔地区会出现结冰现象;<br>';
echo '<hr>';
}
}
class Mark3 extends IronArmor
{
public function generateWeapon()
{
parent::generateWeapon();
echo '<h4>Mark3 : </h4>';
echo '正式上色出征,定为著名的经典的红黄色;<br>';
echo '更换装甲材质完美解决结冰现象;<br>';
echo '装备自动瞄准系统,同时锁定多个目标使用双肩六管迷你炮解决目标;<br>';
echo '装甲手臂隐藏有微型导弹,配备诱弹,用于干热追踪导弹;<br>';
echo '<hr>';
}
}
class Mark5 extends IronArmor
{
public function generateWeapon()
{
parent::generateWeapon();
echo '<h4>Mark5 : </h4>';
echo '应付突发事件而创造的便携装甲,可在任何地方组装,不用时可折叠成手提箱;<br>';
echo '只有单层设计,比较薄弱,除手掌心和胸部的脉冲炮外,没有配备其它武器;<br>';
echo '由一些未知金属组成而不是钛合金,攻击性较弱、防御等级低;<br>';
echo '<hr>';
}
}
class Mark6 extends IronArmor
{
public function generateWeapon()
{
parent::generateWeapon();
echo '<h4>Mark6 : </h4>';
echo '第一个胸部配备三角形电弧脉冲炮的装甲,使用了振金弧反应堆;<br>';
echo '第一套可以进行水下作业的装甲;<br>';
echo '承受重击,吸收外部能量转化为装甲能量;<br>';
echo '<hr>';
}
}
class Mark7 extends IronArmor
{
public function generateWeapon()
{
parent::generateWeapon();
echo '<h4>Mark7 : </h4>';
echo '激光制导跟踪快速部署系统,不需要任何外部的机械协助直接穿戴;<br>';
echo '<hr>';
}
}
class Mark42 extends IronArmor
{
public function generateWeapon()
{
parent::generateWeapon();
echo '<h4>Mark42 : </h4>';
echo '具备了自动组装的能力,可远程操控和自动组装;<br>';
echo '由于自动组装省去了很多链接部件上的螺丝,容易撞坏;<br>';
echo '<hr>';
}
}
class Mark44 extends IronArmor
{
public function generateWeapon()
{
parent::generateWeapon();
echo '<h4>Mark44 : </h4>';
echo '即反浩克装甲,专门用来对抗浩克;<br>';
echo '平时搭载在卫星(维罗妮卡)上,飞行于近地轨道,在使用的时候发射到需要的位置;<br>';
echo '体型十分巨大,甚至比浩克还要大一圈,可以将其他战甲包裹起来;<br>';
echo '采用组合结构附带一个飞行装备库,在损坏时,可将损坏的部位分离使用备用零件修复;<br>';
echo '<hr>';
}
}
class Mark50 extends IronArmor
{
public function generateWeapon()
{
parent::generateWeapon();
echo '<h4>Mark50 : </h4>';
echo '全新采用纳米技术,一键战甲覆盖全身,可随处变出盾牌,大炮,手刀<br>';
echo '<hr>';
}
}
$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();//开始战甲更新换代的表演