一、什么是代理
举个例子,比如小明想要买房子,但是他自己由于上班没有时间,不能打乱上班的节奏,这个时候就想到了中介,小明就找到中介代替小明看房子,看好过后,小明再自己去确认并付钱,然后中介再代理小明办好手续。这就是代理,这里的中介就是代理对象,小明就是被代理对象。
代理的好处:通过代理对象间接操作被代理的目标对象,防止直接修改目标对象,通过代理对原有业务进行增强。
一、静态代理
在使用动态代理之前,我们先看看静态代理的实现。
接口:
public interface Peopleable {
void pay();
}
小明实体类,被代理:
public class XiaoMing implements Peopleable {
@Override
public void pay() {
System.out.println("小明付房款!");
}
}
静态代理(中介):
public class StaticProxy {
private Peopleable peopleable;
public StaticProxy(Peopleable peopleable) {
this.peopleable = peopleable;
}
public void pay() {
// 业务前置增强
System.out.println("中介看好房子!");