动态代理

动态代理

23中设计模式之一。代理模式的定义:为其他对象提供一种代理以控制对这个对象访问。在某种情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。


 

实例:

角色分析:

  抽象角色:一般会使用代理接口或者抽象类来解决

  真实对象:被代理的角色

  代理角色:代理真实对象,做一些附属的操作

  客户:访问代理的对象的人

  代理模式的好处:可以使用角色的操作的纯粹,不用去关注一些公共业务,交给代理角色,实现业务分工,公共业务发展的时候,方便集中,管理

静态代理实现:

 

缺点:每一次出现一个真实对象都需要一个代理对象去代理实现,降低了开发的效率。

为了弥补这一点,从而有了动态代理模式(java反射模式)

动态代理:

 1、基于接口实现的动态代理(jdk反射机制):jdk的动态代理

 2、基于类的动态代理:Cglib,java字节码

Proxy:生成代理类

InvocatioHardle:处理程序的实现的接口,处理代理实例,并返回结果

method:目标类方法

method.invoke:实现方法

args:传入的参数

 

InvocatioHardle接口实现类:

 

静态代理(一个需要代理真实对象对应一个代理对象,降低耦合)

动态代理(一个代理对象可以接收需要代理无数真实对象,降低耦合)

posted @ 2022-08-25 09:30  张栈  阅读(52)  评论(0)    收藏  举报