代理模式
1. 概念
- 为其他对象提供一种代理以控制对该对象的访问。
- 通过代理对象实现调用对象和被调用对象之间的解耦。当被调用对象改变时,只要保证代理对象的接口不变,调用对象的使用方式无需改变。
- 代理模式的实现一般采用:创建一个公开接口或抽象类,被代理类和代理类同时实现该接口,代理类的方法调用被代理类的方法来实现,这样调用类直接调用代理类就间接调用了被代理类。
2. 代理模式应用
- 远程代理:为一个对象在不同的地址空间创建局部代表。这样来隐藏对象存在于不同地址空间的事实。
- 虚拟代理:需要创建开销很大的对象时,通过虚拟代理存放需要很长时间实例化的真实对象。
- 安全代理:用来控制真实对象访问时的权限。
- 智能指引:当调用真实对象时,代理会处理另外一些事情。
3. 代理模式实现
4. 扩展
- 代理是将目标对象的复杂性进行封装,通过代理来完成调用,针对客户端调用的目标类型完成接口定义,并且目标对象要实现这个接口,代理类也要实现这个接口。
- 某些情况下,客户不想或者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。
- 客户端分辨不出代理对象与真实对象。代理模式可以并不知道真正的被代理对象,而仅仅持有一个被代理对象的接口。