定义:代理模式就是多出一个代理类来,代替原对象进行操作。例如你通过中介找房子,中介在这中间就是充当的一个代理类的角色,之所以找通过中介找房子因为中介了解的信息比你了解的多。
代码实现:
public interface Sourceable {
public void method();
}
public class Source implements Sourceable {
@Override
public void method() {
System.out.println("接口实现类");
}
}
public class Proxy implements Sourceable {
private Source source;
public Proxy() {
this.source = new Source();
}
@Override
public void method() {
before();
source.method();
after();
}
public void before(){
System.out.println("代理类之前");
}
public void after(){
System.out.println("代理类之后");
}
}
public class PorxyTest {
public static void main(String[] args) {
Sourceable proxy = new Proxy();
proxy.method();
}
}
输出结果:代理类之前
接口实现类
代理类之后
应用场景:
当一个已有方法在使用时需要对原有方法进行改动,这个时候有两种方案 |
1、对原有方法进行修改,但这样违反了“对扩展开放、对修改关闭”的原则 |
2、就是采用一个代理类调用原有方法、并对返回结果进行控制的,这就是代理模式 |
代理模式的优点:
可以使得功能划分更加清晰、便于后期维护