【发布时间】:2016-02-08 21:39:02
【问题描述】:
为什么要使用“动态代理类”而不是“标准代理”模式?
两者的优缺点是什么?
看起来它们都有相同的最终结果,只是它们的实现方式不同。
动态代理类 https://docs.oracle.com/javase/8/docs/technotes/guides/reflection/proxy.html
动态代理类是实现接口列表的类 在运行时指定,以便通过其中一个方法调用 类实例上的接口将被编码和分派 通过统一的接口到另一个对象。因此,动态代理 类可用于为列表创建类型安全的代理对象 无需预先生成代理类的接口,例如 与编译时工具一样。对一个实例的方法调用 动态代理类被分派到单个方法中 实例的调用处理程序,它们被编码为 java.lang.reflect.Method 对象标识的方法是 调用和一个包含参数的 Object 类型的数组。
标准代理模式https://en.wikipedia.org/wiki/Proxy_pattern
代理,在其最一般的形式中,是一个作为 接口到别的东西。代理可以连接到任何东西: 网络连接、内存中的大对象、文件或其他 昂贵或无法复制的资源。简而言之,一个 代理是客户端调用的包装器或代理对象 访问幕后的真实服务对象。在代理 可以提供额外的功能,例如缓存时 对真实对象的操作是资源密集型的,或者检查 调用对真实对象的操作之前的先决条件。为了 客户端,代理对象的使用类似于使用真实的 对象,因为两者都实现了相同的接口。
【问题讨论】:
标签: java design-patterns dynamic-proxy proxy-pattern