为什么要使用"动态代理类"而不是"标准代理"图案?
两者的缺点或优点是什么?
看起来它们都有相同的最终结果,除了它们的实现方式不同。
动态代理类 https://docs.oracle.com/javase/8/docs/technotes/guides/reflection/proxy.html
动态代理类是实现接口列表的类 在运行时指定,以便通过其中一个方法调用 将对类的实例上的接口进行编码和分派 通过统一的界面到另一个对象。因此,一个动态代理 class可用于为列表创建类型安全的代理对象 接口,无需预先生成代理类,例如 与编译时工具一样。对一个实例的方法调用 动态代理类被调度到一个方法中 实例的调用处理程序,它们用a编码 标识方法的java.lang.reflect.Method对象 调用和包含参数的Object类型数组。
标准代理模式https://en.wikipedia.org/wiki/Proxy_pattern
代理,最常见的形式,是一个充当的类 接触其他东西。代理可以与任何东西连接:a 网络连接,内存中的大对象,文件或其他 资源昂贵或无法复制。简而言之,一个 proxy是客户端调用的包装器或代理对象 在幕后访问真实的服务对象。在代理中 可以提供额外的功能,例如缓存时 对真实对象的操作是资源密集型或检查 调用真实对象上的操作之前的前提条件。对于 客户端,代理对象的使用类似于使用真实的 object,因为它们都实现了相同的接口。
答案 0 :(得分:1)
您似乎回答了自己的问题。您应该使用更容易实现的用例。
如果在编译时没有为每个方法实现,则需要动态代理。
例如,模拟测试库使用动态代理,以便可以编写代码来一般地处理任何方法。