解释
代理模式(proxy),为其他对象提供一种代理以控制对这个对象的访问.
简单理解,代理模式就是访问对象时引入一定程度的间接性,因为有了间接性,就可以在这个间接中添加多种用途.
代理的作用其实就类似于过滤器、 做一些预处理、过滤、后置处理等,代理最重要的就是让你不能直接访问到实际的目标对象,使用的是目标对象的一个代理对象。
具体代码
定义一个接口
public interface Subject {
void Request();
}
真实的实体
public class RealSubject implements Subject {
@Override
public void Request() {
System.out.print("test real");
}
}
代理类proxy
* 在访问对象时引用一定程度的间接性,因为间接性,可以在附加很多种用途了代理就是真实对象的代表
public class Proxy implements Subject {
RealSubject mRealSubject;
@Override
public void Request() {
System.out.print("-------------");
//调用真实实体的对象,平调用方法
if (mRealSubject == null) {
mRealSubject = new RealSubject();
}
mRealSubject.Request();
System.out.print("-------------");
}
}
测试类
public class Main {
public static void main(String[] args) {
Proxy proxy = new Proxy();
proxy.Request();
}
}
“`
静态代理的缺点:
1)代理对象的一个接口只服务于一种类型的对象, 如果要代理的方法很多,势必要为每一种方法都进行代理,静态代理在程序规模稍大时就无法胜任了。
2)如果接口增加一个方法,除了所有实现类需要实现这个方法外, 所有代理类也需要实现此方法。增加了代码维护的复杂度。