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