为什么应该使用“动态代理类”而不是“标准代理”模式?两者的优缺点是什么?它们似乎都有相同的结果,只是实现方式不同。
动态代理类是一种在运行时实现指定接口列表的类,因此对类实例的接口之一进行的方法调用将通过统一接口编码和分派到另一个对象。因此,动态代理类可用于创建类型安全的代理对象,而无需预先生成代理类,例如使用编译时工具。动态代理类实例上的方法调用将被分派到实例的调用处理程序中的单个方法,并且它们使用标识已调用的方法的java.lang.reflect.Method对象和包含参数的Object类型数组进行编码。 https://docs.oracle.com/javase/8/docs/technotes/guides/reflection/proxy.html
动态代理类是一种在运行时实现指定接口列表的类,因此对类实例的接口之一进行的方法调用将通过统一接口编码和分派到另一个对象。因此,动态代理类可用于创建类型安全的代理对象,而无需预先生成代理类,例如使用编译时工具。动态代理类实例上的方法调用将被分派到实例的调用处理程序中的单个方法,并且它们使用标识已调用的方法的java.lang.reflect.Method对象和包含参数的Object类型数组进行编码。 https://docs.oracle.com/javase/8/docs/technotes/guides/reflection/proxy.html
标准代理模式 https://en.wikipedia.org/wiki/Proxy_pattern
代理是一种最常见的类,作为与其他东西交互的接口。代理可以与任何东西进行交互:网络连接、内存中的大对象、文件或其他昂贵或无法复制的资源。简而言之,代理是一个包装器或代理对象,由客户端调用以访问幕后的真实服务对象。在代理中可以提供额外的功能,例如在真实对象上执行操作时进行缓存,或在调用真实对象上的操作之前检查先决条件。对于客户端,使用代理对象与使用真实对象类似,因为两者都实现了相同的接口。