我想了解代理模式和动态代理模式之间的区别。从我目前所读的内容来看,唯一发现的是:代理类的字节码在编译时创建,而动态代理的字节码在运行时创建。还有其他差别吗?如果没有,那么除了性能问题外,为什么要优先选择代理模式而不是动态代理模式呢?
我想了解代理模式和动态代理模式之间的区别。从我目前所读的内容来看,唯一发现的是:代理类的字节码在编译时创建,而动态代理的字节码在运行时创建。还有其他差别吗?如果没有,那么除了性能问题外,为什么要优先选择代理模式而不是动态代理模式呢?
动态代理实质上就是代理设计模式,其中代理对象在运行时动态创建。
代理设计模式使用代理作为客户端和底层真实对象之间的中介。程序员可以在代理中执行访问控制、验证和附加操作,然后再将请求委托给真实对象。
假设你想在调用任何类的方法之前执行一些通用操作,例如记录客户端进行的所有方法调用。 在这种情况下,如果您想实现代理设计模式,请按以下步骤进行:
上述技术的问题在于,假设您有1000个类,您需要为每个类编写1000个代理类,并在所有类的所有方法中实现它们所做的相同操作(在我们的案例中执行日志记录操作),这是非常繁琐和浪费内存的过程。
那么,如果我们能够在运行时基于客户端的调用创建代理对象,并在将调用委托给真实对象之前执行通用操作(在我们的案例中执行记录操作),那不是更好吗?这就是动态代理的作用。
动态代理的过程如下:
总之,如果您要执行某些通用操作,请使用动态代理;但是,如果您希望将每个类视为不同(在某些类中执行日志记录,在某些类中不执行,在某些类中进行访问控制等),请使用简单代理。 希望我能帮到您。如果您需要代码示例,请告诉我。