1.名词解释:
装饰模式:动态的给一个对象添加一个额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式是为已有功能动态地添加更多功能的一种方式。
2.代码示例:
组件类:
package DesignPattern.DecoratorPattern;
public abstract class Component {
public abstract void operation();
}
具体的对象接口类
package DesignPattern.DecoratorPattern;
public class ConcreateComponent extends Component {
@Override
public void operation() {
// TODO Auto-generated method stub
System.out.println("ConcreateComponent.operation is process...");
}
}
装饰类:
package DesignPattern.DecoratorPattern;
public class Decorator extends Component{
protected Component component;
public void setComponent(Component component) {
this.component = component;
}
@Override
public void operation() {
// TODO Auto-generated method stub
if(this.component != null) {
component.operation();
}
}
}
package DesignPattern.DecoratorPattern;
public class ConcreateDecoratorA extends Decorator{
public void operation() {
super.operation();
System.out.println("ConcreateDecoratorA.operation is process...");
}
}
package DesignPattern.DecoratorPattern;
public class ConcreateDecoratorB extends Decorator{
public void operation() {
super.operation();
this.addBehavior();
System.out.println("ConcreateDecoratorB.operation is process...");
}
private void addBehavior() {
System.out.println("ConcreateDecoratorB.addBehavior is process...");
}
}
主控程序类:
package DesignPattern.DecoratorPattern;
public class Client {
public static void main(String[] args) {
ConcreateComponent c = new ConcreateComponent();
ConcreateDecoratorA d1 = new ConcreateDecoratorA();
ConcreateDecoratorB d2 = new ConcreateDecoratorB();
d1.setComponent(c);
d2.setComponent(d1);
d2.operation();
}
}