1、定义一个类实现与被包装类相同的接口
2、定义一个变量,引用被包装类的实例
3、定义构造方法,传入被包装类实例
4、对于要改变的方法,改写即可
5、对于不需要改变的方法,调用被包装类原有的方法
默认适配器
4、基于接口的动态代理:动态代理实现AOP编程的核心技术
5、基于子类的动态代理
CGLIB:基于子类的动态代理
即:代理类是被代理类的子类
被代理类要求:
a、必须是public的
b、必须不是final的
包装设计模式改写close()方法图解: