目录
Spring AOP原理
代理模式
代理模式, 也叫委托模式.
定义: 为其他对象提供一种代理以控制对这个对象的访问. 它的作用就是通过提供一个代理类, 让我们在调用目标方法的时候, 不再是直接对目标方法进行调用, 而是通过代理类间接调用.
在某些情况下, 一个对象不适合或者不能直接引用另一个对象, 而代理对象可以在客户端和目标对象之间起到中介的作用.
使用代理前:
使用代理后:
比如当进行房屋租赁时, 房主会将房屋授权给中介, 由中介来代理看房, 房屋咨询等服务.
代理模式中的主要角色
1.Subject: 业务接口类. 可以是抽象类或者接口(不一定有)
2.RealSubject: 业务实现类. 具体的业务执行, 也就是被代理对象.
3.Proxy:代理类. RealSubject的代理.
譬如房屋租赁
Subject: 就是提前定义了房东要做的事情, 交给中介代理, 也是中介要做的事情.
RealSubject: 房东
Proxy: 中介
UML类图如下:
代理模式可以在不修改被代理对象的基础上, 通过扩展代理类, 进行一些功能的附加和增强.
根据代理的创建时期, 代理模式分为静态代理和动态代理.
静态代理: 由程序员创建代理类或特定工具自动生成源代码再对其编译, 让程序运行前代理类的 .class 文件就已经存在了.
动态代理: 在程序运行时, 运用反射机制动态创建而成.
静态代理
静态代理: 在程序运行前, 代理类的.class文件就已经存在了.