代理模式

AOP(面向切面编程)

  它是面向对象的一种补充增强,它在这基础之上增加了一些而外的功能增强。

 它可以在原有的行为不改变的前提,在这之前或者之后完成一些而外的事情

而AOP用的的思想和模式就是代理模式。

代理模式分为两种:

1)静态代理

编静态代理的代理对象是开发人员自行编写好的,并且在编译期就已经确定。

缺点:

1.需要为每一个目标对象编写相应的代理实例,从而代理不同的业务逻辑。

2.当接口发生变动时,所有的代理类的实现类都必须修改。

2)动态代理

   使用动态代理,代理实例是不需要开发人员去编写,而是有相应的处理程序在运行时动态产生一个字节码,这个字节码就是代理对象,并加载到JVM中执行。由于代理实例是在运行时才会动态产生,因此就叫做动态代理。它和静态代理的区别就在于,静态代理的代理实例是人为编写的,并且实在便宜期就已经确定的。

在Jav语言层面实现动态代理的机制有很多,例如:

JDK动态代理(官方)

  1. Proxy类,用于动态产生代理对象
  2. InvocationHandler接口,回调处理器,负责调用目标对象的行为,并实现功能增强。

JDK动态代理有一个特点,

CGLIB动态代理(第三方开源)

  

原文地址:https://www.cnblogs.com/BruningHUA/p/6221454.html