@songying
2018-07-02T14:20:17.000000Z
字数 931
阅读 1341
设计模式
动态的给一个对象添加一些额外的职责,就增加功能来说,装饰器模式比生成子类更为灵活。

Component抽象构件
Component 是一个接口或抽象类,是定义我们最核心的对象,也就是最原始的对象。
ConcreteComponent具体构件
ConcreteComponent是最核心,最原始,最基本的接口或抽象类的实现,是你要装饰的对象。
Decorator 装饰角色
一般是一个抽象类,在它的属性中必然有一个private变量指向Component抽象构件
ConcreteDecorator 具体装饰角色
ConcreteDecoratorA 与 ConcreteDecoratorB 是两个具体的装饰类,你需要将你最核心,最原始的东西装饰成其他东西。
public abstract class Component{public abstract void operate();}
public class ConcreteComponent extends Component{@Overridepublic void operate(){# do something}}
public abstract class Decorator extends Component{private Component component = null;//通过构造函数传递被修饰者public Decorator(Component _component){this.component = _component}// 委托给被修饰者执行@Overridepublic void operate(){this.component.operate();}}
public class ConcreteDecorator1 extends Decorator{// 定义被修饰者public ConcreteDecorator1(Component _component){super(_component)}//定义自己的修饰方法private void method1(){# 修饰操作}public void operate(){this.method1();super.operate();}}
