1:抽象角色
2:具体角色
3:抽象装饰角色
4:具体装饰角色
/**
* 抽象角色
* */
public interface IDosomething {
void dosomething();
}
/**
* 具体角色
* */
public class Dosomething implements IDosomething {
@Override
public void dosomething() {
System.out.println("写字");
}
}
/**
* 装饰角色
* */
public class zhuangshi implements IDosomething {
private IDosomething ido;
public zhuangshi(IDosomething ido){
this.ido=ido;
}
@Override
public void dosomething() {
ido.dosomething();
}
}
/**
* 具体装饰角色1
* */
public class zhuangshi1 extends zhuangshi {
public zhuangshi1(IDosomething ido){
super(ido);
}
@Override
public void dosomething() {
super.dosomething();
this.dosomething1();
}
public void dosomething1(){
System.out.println("功能2");
}
}
/**
* 具体装饰角色2
* */
public class zhuangshi2 extends zhuangshi {
public zhuangshi2(IDosomething ido){
super(ido);
}
@Override
public void dosomething() {
// TODO Auto-generated method stub
super.dosomething();
this.dosomething2();
}
public void dosomething2(){
System.out.println("功能3");
}
}
/**
* 测试
* */
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
IDosomething ido=new Dosomething();
IDosomething ido1=new zhuangshi1(ido);
IDosomething ido2=new zhuangshi2(ido1);
ido2.dosomething();
}
}