定义:装饰器设计模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。不改变对象的情况下,动态增加其功能。
• 需要扩展一个类的功能,或给一个类添加附加的成员。
• 需要动态地给一个对象增加功能,这些功能可以再次动态的撤销
• 需要增加由一些基本功能的排列组合二产生的非常大量的功能,从而使继承关系实现变得不现实。
装饰器模式中的各个角色:
• 抽象构件角色:给出抽象接口。规范被附加功能类型。
• 具体构件角色:被附加功能的具体实现。
• 装饰角色:持有被附加对象的实例,并实现抽象构件的接口规范(装饰角色实现抽象构件的目的就是为了具体装饰角色之间也可以相互修饰)。
• 具体装饰角色:扩展具体构件的功能
客户端可以显式扩展具体构件的功能,由于装饰器继承了抽象构件的,所以装饰器之间可以相互修饰,任意组合,从而扩展出具有排列组合性质的组合。
代码:
代码
输出结果: