ssm-spring代理模式(静、动态)
一、代理模式
- 代理模式的定义:
- 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
- 组成:
- 抽象角色:通过接口或抽象类声明真实角色实现的业务方法。
代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。
真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。
- 分类:
- 代理模式分为静态代理、动态代理。
静态代理:由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了 动态代理:在实现阶段不用关心代理类,而在运行阶段才指定哪一个对象。
二、静态代理
假定现在有接口ISpeak
,学校(
School
)和校长(
Principal
)都实现了该接口,由于种种原因,学校不能发言 而是由校长代表学校进行发言,这个场景中,目标角色为学校,代理角色为校长:
![](https://zhoux.top/img/markdown/screenshot/20210902141105.png)
发言接口: <