分类
代理有很多实现:
- 远程代理,控制访问远程对象
- 虚拟代理,控制访问创建开销大的资源
- 保护代理,基于权限控制对资源的访问
。。。。。。。
定义
代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问。
- 使用代理模式创建代表对象,让代表对象控制某对象的访问,被代理的对象可以是远程的对象、创建开销大的对象或需要安全控制的对象。
类图

伪代码
public interface Subject{
public void request();
}
public class RealSubject implements Subject{
public void request(){
System.out.println("request");
}
}
public class Proxy implements Subject{
RealSubject realSubject;
public Proxy(){
realSubject = new RealSubject();
}
public void request(){
realSubject.request();
}
}
示例:
Subject sub = new Proxy();
sub.request();
描述
- RealSubject是真正做事的对象,它是被proxy代理和控制访问的对象。
- Proxy持有RealSubject的引用,客户与RealSubject的交互都必须通过Proxy。
- Proxy与RealSubject实现了相同的接口,因此任何用到RealSubject的地方,都可以用Proxy取代。
- 在某些情况下,如数据库、资源等RealSubject都需要由统一的Proxy来控制访问,不能无限制对外开放。
网友评论