代理模式

把自己要做的事委托给别人完成

静态代理:只能代理一件事情

动态代理:代理多件事情

静态代理

  • 真实对象和代理对象都要实现同一个接口
  • 代理对象要代理真实角色

好处:

​ 代理对象可以做很多真实对象做不了的事情

​ 真实对象专注做自己的事情

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 Test07 {
public static void main(String[] args) {
WeddingCompany weddingCompany = new WeddingCompany(new You());
weddingCompany.happyMarry();
}
}

interface Marry {
void happyMarry();
}

class You implements Marry {
@Override
public void happyMarry() {
System.out.println("要结婚了");
}
}

class WeddingCompany implements Marry {
private final Marry target;

public WeddingCompany(Marry target) {
this.target = target;
}

@Override
public void happyMarry() {
before();
this.target.happyMarry();
after();
}
private void before() {
System.out.println("before");
}

private void after() {
System.out.println("after");
}
}