/**
定义一个类为装饰者类
*/
public class decoratorMode extends sameFunctions{
private decratedClass dc;
//装饰者中包含被装饰者,将被装饰者类注入到了装饰者类中
public decoratorMode(){};
public decoratorMode(decratedClass dc){//通过有参构造方法,对变量被装饰者对象dc进行初始化
this.dc = dc;
}
public void get(){//装饰者和被装饰者的功能名称需要保持一致
dc.get();
//原来功能
System.out.println("装饰者对被装饰者进行功能的扩展!~");
//扩展功能
}
}
/**
* 被装饰者类,我们要对它的功能进行扩展
*/
public class decratedClass extends sameFunctions{//现在的目的是通过装饰者类,对该类进行装饰,动态实现功能
public void get(){
System.out.println("被装饰者在此等候多时!");
}
}
/**
装饰者和被装饰者的功能名称需要保持一致(可以通过 抽象方法来实现)
*/
public abstract classsameFunctions {
public abstract voidget();
}
public class dmDemo {
public static void main(String[] args) {
decratedClass dc = new decratedClass();
decoratorMode dm = new decoratorMode(dc);
dm.get();
}
}