Sha*_*ski 6 java design-patterns dynamic-proxy proxy-pattern
我试图了解代理和动态代理模式之间的区别.从我到目前为止所读到的,我发现的唯一事情是代理类字节代码是在编译期间创建的,而动态代理是在运行时创建的.我还缺少另一个差异吗?如果不是那么更喜欢代理而不是动态代理的原因是什么(性能问题除外)
小智 12
动态代理本质上是代理设计模式,其中代理对象是在运行时动态创建的.
代理设计模式使用代理,它充当客户端和底层真实对象之间的中介.在将请求委托给真实对象之前,程序员可以在代理中执行访问控制,验证和附加操作.
现在假设您要执行一些通用操作beform调用任何类的任何方法,例如,您希望保留客户端进行的所有方法调用的日志.在这种情况下,如果要实现代理设计模式,步骤如下:
上述技术的问题是,假设你有1000个类,你需要为每个类编写1000个代理类,并在所有类中实现所有基本上做同样事情的方法(在我们的例子中执行日志记录操作),这是一个非常乏味的过程和记忆的浪费.
如果在运行时,我们能够基于客户端的调用创建代理对象,然后在将调用委托给真实对象之前执行泛型操作(在我们的例子中记录操作),那么它会不会更好,那就是什么dyanmic代理人.
动态代理的过程如下:
所以简而言之,如果你要执行一些通用操作,请使用动态代理,但如果你希望每个类都被区别对待(在某些类中执行日志记录,在某些类中没有,在某些访问控制中等)使用简单代理.希望我帮忙.如果您需要代码示例,请告诉我.