9、装饰模式(Decorator)
使用场景:动态地给一个对象添加一些额外的职责,动态撤销
优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。
缺点:多层装饰比较复杂
模式结构:
a) 抽象构件(Component):定义一个抽象接口以规范准备接收附加责任的对象。
b) 具体构件(ConcreteComponent):实现抽象构件,通过装饰角色为其添加一些职责。
c) 抽象装饰(Decorator):继承抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。
d) 具体装饰(ConcreteDecorator):实现抽象装饰的相关方法,并给具体构件对象添加附加的责任