public function operation() {
$this->_component->operation();
}
}
/**
* 具体装饰类A
*/
class ConcreteDecoratorA extends Decorator {
public function __construct(Component $component) {
parent::__construct($component);
}
public function operation() {
parent:peration(); // 调用装饰类的操作
$this->addedOperationA(); // 新增加的操作
}
/**
* 新增加的操作A,即装饰上的功能
*/
public function addedOperationA() {
echo 'Add Operation A
';
}
}
/**
* 具体装饰类B
*/
class ConcreteDecoratorB extends Decorator {
public function __construct(Component $component) {
parent::__construct($component);
}
public function operation() {
parent:peration();
$this->addedOperationB();
}
/**
* 新增加的操作B,即装饰上的功能
*/
public function addedOperationB() {
echo 'Add Operation B
';
}
}
/**
* 具体构件
*/
class ConcreteComponent implements Component{
public function operation() {
echo 'Concrete Component operation
';
}
}
/**
* 客户端
*/
class Client {
/**
* Main program.
*/
public static function main() {
$component = new ConcreteComponent();
$decoratorA = new ConcreteDecoratorA($component);
$decoratorB = new ConcreteDecoratorB($decoratorA);