代理:一个客户不想或者不能直接引用一个对象,由第三方来实现间接引用。
代理对象可以在客户端和目标对象之间起到中介的作用,可以通过代理对象去掉客户不能看到的内容和服务或添加额外需要的服务。
引入一个新的对象来实现对真实对象的操作或者将新的对象作为真实对象的一个替身。
通过引入代理对象来间接访问一个对象。
代理模式:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。
代理模式角色:抽象主题、实际主题、代理
优点:1、代理模式可以屏蔽用户真正请求的对象,使用户程序和真正的对象之间解耦
2、使用代理来担当那些创建耗时的对象的替身。
缺点:1、代理模式可能会造成请求的处理速度变慢
2、有些代理模式复杂
使用场景:1、程序可能不希望用户直接访问该对象,而是提供一个特殊的对象以控制对当前对象的访问
2、一个对象需要很长时间才能加载完成
3、假设对象位于远程主机上,需要为用户提供访问该远程对象的能力