代理模式:通过增加一个中间层来控制对真实对象的访问。
如果我们要访问的对象由于不在本地、无法获得、构造复杂等原因无法立即获取,这时代理模式就可以用代理对象来帮我们实现访问,同时可以控制对真实对象的访问权限,或者做一些附加操作。
通过使代理对象和真实对象实现同样的接口,可以是客户端使用透明。
远程代理:要访问的资源不在本地(web services)。
虚拟代理:要访问的对象构造比较复杂,需时较长,用代理对象代替(html加载时图片框)
安全代理:控制对真实对象的访问权限
缺点:每一个真实对象都需要一个代理对象;如果事先不知道对象是什么类,就无法用代理模式(这就要用动态代理)。