Day23——动态代理
一. 回顾 前面 Day22——AOP前奏 讲到了计算器的日志功能问题,由于代码散乱,需要将日志功能独立出来实现,需要用到动态代理。今天讲述动态代理。 本文章项目源码已上传到本博客的“资源”,可自行前往免费下载 二. 原理 2.1 动态代理的原理 代理设计模式的原理:使用一个代理将对象包装起来,然后用该代理对象“取代”原始对象,任何原始对象的调用都需要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上。 动态代理原理: 在运行时,动态地给原始对象(即目标对象)生成一个代理对象,代理对象可以增强原始对象的功能(即扩展功能),代理对象只能完成扩展出来的功能,而原始对象的功能还必须由原始对象去完成。但是,代理对象决定是否以及何时将功能转回到原始对象上。 2.2 JDK动态代理 Proxy:所有动态代理的父类。主要用于生成代理类,代理对象。 //返回代理类的Class对象 public static Class < ? > getProxyClass ( Classloader loader , Class < ? > . . . interface ) ; //返回代理对象 public static Object newProxyInstance ( Classloader loader , Class < ? > [ ] . . . interface ,