<?php abstract class Component { abstract public function operation(); } class MyComponent extends Component { public function operation() { echo "這是正常的組件方法 <br>"; } } abstract class Decorator extends Component { protected $component; function __construct(Component $component) { $this->component = $component; } public function operation() { $this->component->operation(); } } class MyDecorator extends Decorator { function __construct(Component $component) { parent::__construct($component); } public function addMethod() { echo "這是裝飾器添加的方法 <br>"; } public function operation() { $this->addMethod(); parent::operation(); } } $component = new MyComponent(); $da = new MyDecorator($component); $da->operation();