静态代理和动态代理都是代理模式的实现方式,他们的主要区别在于代理类的创建时间和方式:
静态代理:
在编译时就以确定好代理类和被代理类的关系,代理类是在编译期间就确定好的.
静态代理需要为每一个被代理类创建一个代理类,如果系统中有多个类需要代理,就会创建大量代理类,造成代码冗余.
动态代理:
指程序运行时动态省的代理类,而不是编译时就确定好的.
动态代理利用的是java反射机制,在运行时动态的代理类和对象,无需针对每个被代理类编写单独的代理类.
动态代理可以更灵活的对多个类进行代理,减少了重复的代理类的创建,提高了代码的复用性和灵活性.
比如; CGLIB JDK动态代理.