静态的代理即写出代理类和目标类,代理类和目标类实现同一个接口,客户端程序可以通过配置文件的修改来决定调用代理类还是目标类,代理类除了有目标类的代码以为,还添加了有其他功能的代码,比如目标代码运行时间的时长
动态代理的需求就产生了,我们写了许多个目标类,同时还要写许多个代理类,为了提高工作效率,JVM可以在运行期间动态的生成出类的字节码,这种动态生成的类往往被用作代理类,即动态代理类。举个例子,通过调用Proxy类中的方法,我们可以实现Collection类,然后再传入ArrayList类,然后再指定你要修改ArrayList中的方法。然后在调用代理类的这个方法的时候,除了要实施目标中的方法的代码,还要实施你添加的代码。
如果不这样做的话,你就要复制粘贴一份ArrayList类的代码,然后将复制后的文件名字设置成ProxyArrayList,然后在你想要修改的方法中添加代码。这样做挺没有效率的 |