设计模式之动态代理(JDK代理)

  动态代理跟静态代理一个很重要的区别在于,动态代理是在内存是中的,是在代码编译期后在内存是实现的,而静态代理是我们自己编写代理类,编译后生成class文件。动态代理需要借助两个类:java.lang.reflect.InvocationHandler和java.lang.reflect.Proxy。我们还是以上边的例子来实现动态代理。首先需要创建一个类,并实现java.lang.reflect.InvocationHandler接口

public class FoodProxy<T> implements InvocationHandler {

    public T obj;

    public FoodProxy(T t) {
        obj = t;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("开始。。。");
        Object result = method.invoke(obj, args);
        System.out.println("结束。。。");
        return result;
    }
}

 

上一篇:Proxy&Reflect


下一篇:认识一下ES6的Reflect和Proxy