//被装饰类
class Person{
public Person(){}
private String name;
public Person(String name){
this.name=name;
}
public void show(){
System.out.println("show " + name);
}
}
//服饰类:装饰父类
class Finery extends Person{
protected Person component;
public void Decorate(Person component){
this.component=component;
}
public void show(){
if(component !=null)
{
component.show();
}
}
}
//具体服饰类:装饰子类
class TShirts extends Finery{
public void show(){
System.out.print(" Tshirts ");
super.show();
}
}
class BigTrouser extends Finery{
public void show(){
System.out.print(" BigTrouser ");
super.show();
}
}
public class Test {
public static void main(String[] args){
Person xc=new Person("xiao cai");
TShirts ts=new TShirts();
BigTrouser bt=new BigTrouser();
bt.Decorate(ts);
ts.Decorate(xc);
ts.show();
}
}
结果:
BigTrouser Tshirts show xiao cai