您的位置:首页 > 编程语言 > Java开发

装饰者模式

2015-12-23 21:34 323 查看
1.应用场景

当一个主体A最多拥有n个部件并且每个部件都可没有时,如果用类来描述A及其部件,那最多可以用到2n个类,这时明显不合理。如果把所有部件放在一个类里则会造成这个类过于庞大,不易于维护。

2.解决方案

采用递归的思想,让主体A和其部件实现同一个接口,并且部件内包含实现接口。

3.实现代码

主体A和其部件都应该实现的接口
public interface TopInterface{
void execute();
String getDescription();
}

主体A

public class A implements TopInterface{
public void execute(){
System.out.println("A is executing");
}
public String getDescription(){
return "This is A";
}
}

装饰者抽象类
public abstract Decorator extends TopInterface{

}
部件Aa
public class Aa implements TopInterface{
private TopInterface t;
//get,set
public Aa(TopInterface t){
this.t = t;
}
public void execute(){
t.execute();
System.out.println("Aa is executing");
}
public String getDescription(){
return t.getDescription() + "This is Aa";
}
}

部件Ab
public class Ab implements TopInterface{
private TopInterface t;
//get,set
public Ab(TopInterface t){
this.t = t;
}
public void execute(){
t.execute();
System.out.println("Ab is executing");
}
public String getDescription(){
return t.getDescription() + "This is Ab";
}

}
测试类
public class Test{
public static void main(String args[]){
A a = new A();
Aa aa = new Aa(a);
Ab ab = new Ab(a);
ab.execute();
System.out.println(ab.getDescription());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息