@songying
2018-07-02T22:20:17.000000Z
字数 931
阅读 1138
设计模式
动态的给一个对象添加一些额外的职责,就增加功能来说,装饰器模式比生成子类更为灵活。
Component抽象构件
Component 是一个接口或抽象类,是定义我们最核心的对象,也就是最原始的对象。
ConcreteComponent具体构件
ConcreteComponent是最核心,最原始,最基本的接口或抽象类的实现,是你要装饰的对象。
Decorator 装饰角色
一般是一个抽象类,在它的属性中必然有一个private变量指向Component抽象构件
ConcreteDecorator 具体装饰角色
ConcreteDecoratorA 与 ConcreteDecoratorB 是两个具体的装饰类,你需要将你最核心,最原始的东西装饰成其他东西。
public abstract class Component{
public abstract void operate();
}
public class ConcreteComponent extends Component{
@Override
public void operate(){
# do something
}
}
public abstract class Decorator extends Component{
private Component component = null;
//通过构造函数传递被修饰者
public Decorator(Component _component){
this.component = _component
}
// 委托给被修饰者执行
@Override
public 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();
}
}