简介
代理模式是为对象提供一个代理以增强对象内的方法。
例:你需要购买一套房子,需要自己去找房子看位置、谈价格一系列的事情。有了中介,我们只需要交钱入住。
JDK动态代理
public interface BuyHouse{
void buyHouse();
}
public class BuyHouseImpl implements BuyHouse{
public void buyHouse(){
System.out.println("买房子");
}
}
代理类
public class ProxyJDK implements InvocationHandler {
private Object object;
public ProxyJDK(Object object){
this.object = object;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("代理前要做的事情");
Object result = method.invoke(object,args);
System.out.println("代理后要做的事情");
return result;
}
}
public static void main(String[] args) throws SQLException {
BuyHouse buyHouse = new BuyHouseImpl();
ProxyJDK proxy = new ProxyJDK(buyHouse);
buyHouse = (BuyHouse) Proxy.newProxyInstance(buyHouse.getClass().getClassLoader(),buyHouse.getClass().getInterfaces(),proxy);
buyHouse.buyHouse();
}