静态代理
静态代理由委托类和代理类组成,在我们的java文件中写好,编译成.class文件。在客户端调用代理类的方法来使用委托类的方法。这些方法都在程序编译时都已经准备好了。
动态代理
Java的特点之一,动态代理。能在程序运行时去寻找我们需要的方法,譬如在aop和retrofit中被使用到了。我们经常会使用一些sdk或者jar包,但我们并没有源代码,因此需要我们用继承或者聚合去添加我们需要的新功能,然后这些类则会造成功能混乱不清,不符合单一原则。动态代理的出现极大帮助我们拓展新功能,它犹如两层静态代理,在委托类和代理类之间架起一座桥梁。
通过实现InvocationHandler中的invoke方法来拓展新加入的方法 再通过Proxy.newProxyInstance() 生成的代理类对象。
网友评论