版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HZMand1/article/details/83787221
何谓代理模式
代理模式是指客户端不直接调用服务对象,而是通过代理服务去调用对象。
应用场景
1.当需要为一个对象在不同的地址空间提供局部的代表时;此时的代理模式是远程代理。
目的:
a.隐藏一个对象存在于不同的地址空间的事实;
b.远程机器可能具有更好的计算性能与处理速度,可以快速响应并处理客户端请求
2.创建开销非常大的对象时,此时的代理模式称为虚拟代理:通过使用过一个小的对象代理一个大对象。
目的:
减少系统的开销。
3.控制对原始对象的访问时,此时的代理模式称为保护代理:控制目标对象的访问,给不同用户提供不同的访问权限
目的:
用来控制对真实对象的访问权限
4.需要在访问对象时附加额外操作时,此时的代理模式称为智能引用代理,额外操作包括耗时操作、计算访问次数等等
目的:
在不影响对象类的情况下,在访问对象时进行更多的操作
优缺点
1.可以很好的保护目标对象。
2.协调调用者和被调用者,降低了系统的耦合度
a.增加代理会降低客户端对实际对象访问时间
b.增加系统的复杂性
代码实现
静态代理:
//create interface
public interface Subject {
public void init();
}
//create Real Subject
public RealSubject implements Subject {
@Override
public void init (){
System.out.printl("Proxy 静态代理");
}
}
//create Proxy Subject
public ProxySubject implements Subject {
private Subject subject;
public ProxySubject(Subject subject) {
this.subject = subject;
}
@Override
public void init(){
subject.init();
}
}
//Test
public class Client{
public static void main(String[] org){
ProxySubject proxySubject = new ProxySubject();
proxySubject.init();
}
}
动态代理:
其实在很多配置文件 都有看到过,在需要的时候初始化对象。