代理模式是什么?代理模式的优缺点有哪些?

您可能对代理有一定的了解,但您不一定了解代理模式。 代理模式是一种设计模式,提供对目标对象的额外访问。 例如,销售代理充当火车站对象的代理,并提供购票方式。 那么代理模式有多少种呢? 代理模式的优缺点是什么? 结合IP模拟器代理了解一些代理模式的基础知识。  
 
 
代理方式有几种
 
1.动态代理
 
是在jvm运行时通过反射动态创建对象 ,生成字节码对象(构造方法参数InvocationHandler h类型),传入我们实现InvocationHandler接口的对象,通过反射创建代理对象。 那么当代理对象的任何方法被调用时,都会调用h中的invoke(Object proxy, Method method, Object[] args),传入当前代理对象、当前调用的方法、方法参数值。  
 
2.静态代理 
 
代理类由程序员创建,然后编译成 .class 文件。 但缺点是代码重复,不灵活。 比如在接口A中的所有方法执行前添加日志逻辑。如果使用静态代理,则必须添加代理类中的每个方法。 如果我想在开头的方法中添加*添加一个逻辑,在select*开头的方法中添加另一个逻辑。 那么就很难实现和维护。 如果要解决上面的困惑,就必须使用动态代理。  
 
代理模型的优缺点 
 
1.单个目标对象 
 
 静态代理实现比较简单,只要代理对象包裹了目标对象 ,可以实现增强功能,但静态代理只能服务一个目标对象。 如果目标对象太多,就会产生很多代理类。  
 
2.实现多个类 
 
 静态代理通常只代理一个类,动态代理是在一个接口下代理多个实现类。  
 
3.系统性能消耗
 
 动态代理必须实现InvocationHandler接口。 通过反射代理的方式,消耗了系统性能,但是可以减少代理类的数量,使用起来更加灵活。  CGLIB实现动态代理,不需要代理类必须实现接口。  
 
4.class文件 

编译时已经实现了静态代理,代理类是编译后的实际类文件。 动态代理是在运行时动态生成的,即编译完成后没有实际的类文件,而是在运行时动态生成类字节码并加载到JVM中。  
 
代理模式有哪些? 代理模式的优缺点是什么? 通过以上的了解,相信大家已经有了一定的了解。 在某些情况下,一个对象不合适或不能直接引用另一个对象,代理对象可以在客户端和目标对象之间起到中介作用。