文章目录
  1. 代理模式

代理模式

  • 为其他对象提供一种代理以控制这个对象的访问

Proxy

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
public interface AppleSeller {
void privide(int quantity);
}
//一般其实不需要使用内部类,这里模拟下权限的隔离
public class AppleSellerProxy implements AppleSeller {
private AppleSeller fakeSeller;
private AppleSeller certifiedProvider;
public AppleSellerProxy(){
fakeSeller=new FakeProvider();
certifiedProvider=new CertifiedProvider();
System.out.println("供应商找完了!");
}
@Override
public void privide(int quantity) {
if(quantity>100){
System.out.println("买的很多,给他一些假货!");
fakeSeller.privide(quantity/2);
certifiedProvider.privide(quantity-quantity/2);
return;
}
System.out.println("给真货!");
certifiedProvider.privide(quantity);
}
private class CertifiedProvider implements AppleSeller{
@Override
public void privide(int quantity) {
System.out.println("给你"+quantity+"个正品!");
}
}
private class FakeProvider implements AppleSeller{
@Override
public void privide(int quantity) {
System.out.println("给你"+quantity+"个假货!");
}
}
}
public class Client {
public static void main(String[] args) {
// 对于客户来说,你只能找到代理而找不到供货商
AppleSeller seller=new AppleSellerProxy();
seller.privide(10);
seller.privide(1000);
// 在实际的开发当中也是如此,提供给客户端的接口其实是一个代理,
// 用于进一步的精细控制,比如灰度发布的逻辑与权限的逻辑等,
// 之后再把不同的请求发送至不同的服务端
}
}
文章目录
  1. 代理模式