1、基本概念
定义:为其他对象提供一种代理,以控制对这个对象的访问
对外开放Proxy类,但是具体的逻辑由RealSubject实现。
public interface Subject{
void request();
}
public class RealRequest implements Subject{
@Override
public void request() {
//真正的实现
}
}
public class Proxy implements Subject{
Subject real = new RealRequest();
//一层代理
@Override
public void request() {
this.real.request();
}
}
2、应用
优点:
职责清晰:真正的业务类只需要关心实现业务,而不需要关系其他
高扩展性。
分类:
普通代理
动态代理:借助反射
强制代理:实例化一个对象,返回的是对象的代理,然后用对象的代理操作
虚拟代理:调用真正的业务类时,先判断是否有真实的业务类,没有的话先实例化再调用。类似将真正的业务类懒加载