不断地为对象添加装饰。
示例
给文字添加装饰边框。
类图
Display类
1 | public abstract class Display { |
StringDisplay类
1 | public class StringDisplay extends Display { |
Border类
1 | public abstract class Border extends Display { |
SideBorder类
1 | public class SideBorder extends Border { |
FullBorder类
1 | public class FullBorder extends Border { |
Main类
1 | public class Main { |
运行结果
1 | Hello, world. |
登场角色
Component
增加功能时的核心角色。在示例程序中,由Display类扮演此角色。
ConcreteComponent
该角色实现了Component角色所定义的接口(API)。在示例程序中,由StringDisplay类扮演此角色。
Decorator(装饰物)
该角色具有与Component角色相同的接口(API)。在它内部保存了被装饰对象——Component角色。Decorator角色知道自己要装饰的对象。在示例程序中,由Border类扮演此角色。
ConcreteDecorator(具体的装饰物)
该角色是具体的Decorator角色。在示例程序中,由SideBorder类和FullBorder类扮演此角色。