定义
装饰模式 Decorator : 在不改变原有功能的基础上, 动态的给一个对象添加一些额外的职责 ,非常符合开闭原则 (对修改关闭,对扩展开放)
结构图
Component是定义了一个接口(抽象类 、接口都可以),可以给这些对象动态的添加职责。
ConcreteComponent 是定义了一个具体的对象,也可以给这个对象添加一些职责。
Decorator 装饰抽象类, 继承了Component , 从外类来扩展Component类的功能, 但对已Component来讲,是无需知道Decorator的存在的。
至于ConcreteComponent 就是具体的装饰对象,给Component添加职责的功能。
总结下,分工如下:
• Component:抽象构件,装饰者和被装饰者共同的父类,是一个接口或者抽象类,用来定义基本行为
• ConcreteComponent:定义具体对象,即被装饰者
• Decorator:抽象装饰者,继承自Component,从外类来扩展ConcreteComponent
。
• ConcreteDecorator:具体装饰者,用于扩展ConcreteComponent
需求
【接口 】
package com.gof.decoratorPattern;
public interface Component {
void operation();
}
【实现类 】
public class ConcreteComponent implements Component {
@Override
public void operation(