Proxy
定义
为其他对象提供代理以控制对这个对象的访问
栗子
我的梯子(V2Ray)
- 当我请求网络时,我的梯子接受我的请求 
- 看看这是不是外国的域名(假如我开启了PAC) - 是 - 拦截请求,我来帮你做一些事
 
- 否 - 放行
 
 
Proxy VS Adapter
Adapter把A接口转为B接口
Proxy不改变接口
应用
权限检查
- 可以在调用目标接口前后添加一些功能 - 栗子 - 比如我的梯子(权限检查)
 
- 为啥不直接在目标接口里实现呢? - 每个类应该各司其职
- 我要开发一款梯子,有现成的接口可以调用,何必重复造轮子
 
 
Remote Proxy
- 栗子 - TeamViewer
 
- 我的接口是个代理,这个代理负责把对方法的访问转化成远程调用 
Virtual Proxy
- 不到万不得已,代理对象是不会创建的 
- 栗子 - JDBC - 执行SQL语句才创建代理对象
 
 
Protection Proxy
- 用代理对象控制对原始对象的访问
Smart Reference
- 可以smart的释放资源
 
     
        