①UML设计:

②定义 : 动态的给对象增加新的功能 ,装饰器模式可以提供比继承更多的灵活性,允许系统动态的提供一个需要的“装饰”,或者去除一个“装饰”。
③示例:
/**
* 抽象构建角色
*/
public interface Component{
void function();
}/**
* 具体构建角色
*/
public class ConcreteComponent implements Component{
@Override
public void function(){
System.out.println("function A");
}
}/**
* 构建装饰者角色
*/
public class Decorator implements Component{
//持有一个Component对象
Component component;
public Decorator(Component component){
this.component = component;
}
@Override
public void function(){
this.component.function();
}
}/**
* 构建具体装饰着角色A
*/
public class ConcreteDecoratorA extends Decorator{
public ConcreteDecoratorA(Component component){
super(component);
}
@Override
public void function(){
super.function();
this.addBehavior();
}
//新增功能行为
private void addBehavior(){
System.out.println("add behavior A");
}
}/**
* 构建具体装饰着角色B
*/
public class ConcreteDecoratorB extends Decorator{
public ConcreteDecoratorB(Component component){
super(component);
}
@Override
public void function(){
super.function();
this.addBehavior();
}
//新增功能行为
private void addBehavior(){
System.out.println("add behavior B");
}
}public class Test{
public static void main(String args[]){
Component component = new ConcreteComponent();
Component decoratorA = new ConcreteDecoratorA(component);
Component decoratorB = new ConcreteDecoratorB(decoratorB);}
decoratorB.function();
}
2912

被折叠的 条评论
为什么被折叠?



