代理模式

发布时间 2024-01-05 16:53:19作者: jishaleng

动态代理核心代码


/**
 * @Author: jishaleng
 */
public class ProxyInvocationHandler implements InvocationHandler {

    // 目标对象/委托对象
    private Object target;

    public ProxyInvocationHandler(Object target) {
        this.target = target;
    }

    /**
     * @param proxy  : 代理对象
     * @param method : 目标对象的方法 对象
     * @param args   : 目标对象的方法参数
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("执行目标对象的方法前");
        /**
         * 反射方式调用目标对象的方法
         * target : 目标对象
         * args : 目标对象的方法参数
         * result : 目标对象方法的执行结果
         */
        Object result = method.invoke(target, args);
        System.out.println(result);
        System.out.println("执行目标对象的方法后");
        return result;
    }
}