GOF设计模式
Decorator Pattern
装饰者设计模式
装饰者模式应用场景
• 1、想透明并且动态地给对象增加新的职责的时候。• 2、给对象增加的职责,在未来存在增加或减少可能。
• 3、用继承扩展功能不太现实的情况下,应该考虑用组合的方式。
public class Girl {
String description="no particular";
public String getDescription() {
return description;
}
}
public class Chinese extends Girl {
public Chinese(){
this.description="中国姑娘";
}
}
public class American extends Girl {
public American(){
this.description="美国姑娘";
}
}
public abstract class GirlDecorator extends Girl{
public abstract String getDescription();
}
public class Code extends GirlDecorator {
private Girl girl;
Code(Girl girl){
this.girl=girl;
}
@Override
public String getDescription() {
return this.girl.getDescription()+"还会写代码";
}
}
public class Art extends GirlDecorator {
private Girl girl;
public Art(Girl girl){
this.girl=girl;
}
@Override
public String getDescription() {
return this.girl.getDescription()+"还会画画";
}
}
public class Test {
public static void main(String[] args) {
Girl girl=new American();
System.out.println(girl.getDescription());
Code code=new Code(girl);
System.out.println(code.getDescription());
Art art=new Art(code);
System.out.println(art.getDescription());
}
}