分类
远程代理||保护代理||缓冲代理||智能引用代理||
优点
能够协调调用者和被调用者,降低系统的耦合度
可以针对抽象主题角色编程,增加和修改代理类无需修改源代码,符合开闭原则
缺点
由于客户端和真实主题中增加了代理对象,可能会导致请求的处理速度变慢
实现代理可能需要额外的工作,而且有些代理的实现非常复杂。
适用场景
当客户端需要访问远程主机中的对象时,就需要一个远程代理
当需要一个消耗资源较少的对象来代表一个消耗资源较多的对象时,便可以使用虚拟代理
当需要控制一个对象的访问,为不同用户提供不同级别的访问权限时,可以使用保护代理
当需要为一个被频繁访问的操作结果提供一个临时储存空间,以供多个对象共享这些结果时,可以使用缓冲代理
当需要为一个对象的访问提供一些额外的操作时,可以使用智能引用代理