装饰者模式用于对已有的功能动态的添加更多功能的一种方式,将每个要添加的功能放在单独的类中,并让这个类包装它所 要装饰的对象,因此,当需要执行特殊的行为时,就可以在运行时有选择地使用装饰功能包装对象了。如下例子,用服饰来装饰人。
public class TShirts extends Finery{
public void sThow(){
System.out.println("大T恤");
}
public void show(){
sThow();
super.show();
}
}
public class BigTrouser extends Finery{
public void snhow(){
System.out.println("垮裤");
}
public void show(){
snhow();
super.show();
}
}
以上来个均为对人进行特殊服饰的装饰,因此还需要定义一个父类
public class Finery extends Person{
protected Person component;
public void Derorate(Person component){
this.component=component;
}
public void show(){
if(component!=null){
component.show();
}
}
}
需要包装的类
public class Person {
private String name;
public Person(){
}
public Person(String name){
this.name=name;
}
public void show(){
System.out.println("装扮的"+name);
}
}