定义:动态地给一个对象增加一些额外的职责,不需要建立更多子类。是对象结构型模式。
角色:
Component抽象构件
定义对象的接口,可以给这些对象动态增加职责。声明了在具体构建中实现的业务方法,其可以使客户端以一致的方式处理未被装饰的对象以及装饰之后的对象,实现客户端的透明操作。
ConcreteComponent具体构件
定义了具体的构件对象,实现了在抽象构件中声明的方法。
Decorator抽象装饰类
是抽象构件类的子类,用于给具体构件增加职责,但具体职责在其子类中实现。维护一个指向抽象构建对象的引用,通过该引用可以调用装饰之前构件对象的方法,并通过子类扩展该方法,以达到装饰的目的。
ConcreteDecorator具体装饰类
是抽象装饰类的资料,负责向构件添加新的职责,每个具体装饰类都定义了一些新的行为。
代码:
Component
abstract class Component{
public abstract function operation();
}
ConcreteComponent
class ConcreteComponent extends Component{
public function operation(){
echo "具体构件";
}
}