代理(Proxy)模式:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。比如我们在租房子的时候会去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。
租房:
java
public interface RentInterface {
void rent();
}
房东租房:
java
public class FangDong implements RentInterface {
@Override
public void rent() {
System.out.println("房东租房");
}
}
中介代理房东租房:房东作为中介的成员变量
java
public class Proxy implements RentInterface{
private FangDong fangDong;
public Proxy(FangDong fangDong) {
this.fangDong = fangDong;
}
@Override
public void rent() {
fangDong.rent();
}
}
测试,中介租房,实际就是房东租房。
java
public class Test {
public static void main(String[] args) {
FangDong fangDong = new FangDong();
RentInterface proxy =new Proxy(fangDong);
proxy.rent();
}
}
打印:房东租房
代理模式的应用场景:
如果已有的方法在使用的时候需要对原有的方法进行改进,此时有两种办法:
- 修改原有的方法来适应。这样违反了"对扩展开放,对修改关闭"的原则。
- 就是采用一个代理类调用原有的方法,且对产生的结果进行控制。这种方法就是代理模式。
使用代理模式,可以将功能划分的更加清晰,有助于后期维护!