可以无侵入式的给代码增加额外的功能
对象可以通过代理来转移部分职责
- 调用过程:调用者 -> 代理 -> 对象
- 代理里面就是对象要被代理的方法
- Java通过接口保证代理的样子,对象和代理需要实现同一个接口,接口中是被代理的所有方法
创建代理对象
java.lang.reflect.Proxy
类:提供了为对象产生代理对象的方法public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)
- 参数一:指定类加载器,加载生成的代理类
- 参数二:指定接口,这些接口用于指定代理有哪些方法
- 参数三:指定生成的代理对象要干什么