最近在写RPC框架时用到了代理模式,进一步增加了对代理模式的理解,因为服务对代发送请求的客户端在代码中对是不可见的,所以可以对外提供一个方法,使用动态代理从class类中通过反射来实例化出对象。
关于代理模式知乎上有个回答写的非常好 www.zhihu.com/question/20…
以下是个人简述:
代理对象 = 增强代码 + 目标对象(原对象)
静态代理和动态代理主要是插入增强代码和创建class对象这一过程有所区别
静态代理需要为每个要被代理的类编写专门的增强代理类,然后实例化增强代理类
而动态代理无需为每个被代理者编写,只需要写出公共的增强代码,然后本质上是class造class之后再实例化
关于class对象和实例的关系,有一张图很直观