装饰模式:动态的将责任附加到对象上。(有点递归的意思)使用时传递参数要小心,不要传递自身


//定义抽象基类

public abstract class BaseClass{

   public abstract int calculate();

}


//子类使用基类对象作为构造方法参数,并在某些方法中对其进行"装饰"

public class ExtBaseClass extends BaseClass{

   private BaseClass original;

   public ExtBaseClass(BaseClass bc){

       original=bc;

   }


   @Override

   public int calculate(){

       return (int)(original.calculate()*0.95);

   }

}