```
class Weapon
{
public function attack()
{
return 10;
}
}
abstract class Decorator
{
protected $weapon;
public function __construct($weapon)
{
$this->weapon = $weapon;
}
abstract public function attack();
public function __call($method, $parameters)
{
return call_user_func_array([$this->weapon, $method], $parameters);
}
}
class ToxicDecorator extends Decorator
{
public function attack()
{
return $this->weapon->attack() + 15;
}
public function toxic()
{
echo 'toxic';
}
}
class LightingDecorator extends Decorator
{
public function attack()
{
return $this->weapon->attack() + 5;
}
public function lighting()
{
echo 'lighting';
}
}
$weapon = new Weapon();
$weapon = new ToxicDecorator($weapon);
$weapon = new LightingDecorator($weapon);
echo $weapon->attack();
echo $weapon->toxic();
echo $weapon->lighting();
// output
// 30
// toxic
// lighting
```
沒有留言:
張貼留言