代理模式的分类?
代理模式主要可以分为两大类:静态代理和动态代理。
-
静态代理:静态代理在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。在静态代理中,代理类通常会被明确地定义出来,并且会实现与目标对象相同的接口。这需要程序员手动创建代理类,或者使用一些工具在编译期生成代理类的字节码。静态代理的一个典型应用实例是我们前面讨论的
StaticPaymentProxy
例子。 -
动态代理:动态代理是在运行时动态生成的,动态代理类并不需要我们手动创建,只需要在运行时动态地创建代理对象,该对象通常代理的是一个接口的所有方法。在Java中,可以使用
java.lang.reflect.Proxy
类创建动态代理,还有一些第三方库如CGLib、ByteBuddy、Javassist等也可以创建