目录
  1. 1. 一、静态代理
  2. 2. 二、动态代理
代理模式

SpringAOP的底层需要代理模式

一、静态代理

角色分析:

  • 抽象角色:一般会使用接口或者抽象类来解决
  • 真实角色:被代理的角色
  • 代理角色:代理真实角色,代理真实角色后,我们一般会做一些附属操作
  • 客户:访问代理对象的人!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//中介,充当代理角色
public class Proxy implements Rent {
private Host host;
public Proxy() {
}
public Proxy(Host host) {
this.host = host;
}
@Override
public void rent() {
seeHouse();
host.rent();
}
//代理函数中可以加一些附属的函数
public void seeHouse(){
System.out.println("看房");
}
}

//出租这件事是抽象的,设置为接口
interface Rent{
public void rent();
}
//房东出租房子,房东是被代理者
class Host implements Rent{
@Override
public void rent() {
System.out.println("房东要租房");
}
}

// 租客,使租房这件事执行起来
class Client{
public static void main(String[] args) {
Host host = new Host();
Proxy pro = new Proxy(host);
pro.rent();
}
}

好处:

  • 可以使真实角色的操作更加纯粹!不用去关注一些公共的业务
  • 公共也就就交给代理角色!实现了业务的分工!
  • 公共业务发生扩展的时候,方便集中管理!

缺点:

  • 一个真实角色就会产生一个代理角色;代码量会翻倍 开发效率会变低

二、动态代理

文章作者: liuDH
文章链接: http://yoursite.com/2020/03/02/%E4%BB%A3%E7%90%86%E6%A8%A1%E5%BC%8F/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 毛毛裤裤的世界
打赏
  • 微信
  • 支付寶