天天看点

Java设计模式--装饰模式装饰模式(别名:包装类)Decorator Pattern(Another Name: Wrapper)类图模式的结构与使用简单的例子

装饰模式(别名:包装类)

动态地给对象添加一些额外的职责。就功能来说装饰模式相比生成子类更为灵活。

Decorator Pattern(Another Name: Wrapper)

Attach additional responsibilities to an object dynamically。Decorators provide a flexible alternative to subclassing for extending functionality.

类图

Java设计模式--装饰模式装饰模式(别名:包装类)Decorator Pattern(Another Name: Wrapper)类图模式的结构与使用简单的例子

模式的结构与使用

装饰模式的结构中包括四个角色。

+ 抽象组件(Component):抽象组件是一个抽象类或者接口。抽象组件定义了“被装饰者”需要进行“装饰”的方法。

+ 具体产品(ConcreteComponent):具体组件是抽象组件的一个子类,具体组件的实例称为“被装饰者”。

+ 装饰(Decorator):装饰也是抽象组件的一个子类,但装饰还包含一个抽象组件声明的变量以保存“被装饰者”的引用。装饰可以是抽象类也可以是一个非抽象类,如果是非抽象类,那么该类的实例称作“装饰者”。

+ 具体装饰(ConcreteDecorator):具体装饰是装饰的一个非抽象子类,具体装饰的实例称作“装饰者”。

简单的例子