动态代理

对象的方法中需要新增内容,如果在方法中直接修改,属于侵入式修改,也不符合开闭原则。

这时候就需要代理,将新增的内容写在代理方法中,在代理方法中调用原本的方法。

以后通过代理来访问对象的方法。

对象想要什么方法被代理,代理中就应该实现什么方法

java中怎么实现代理:类和代理实现同一个接口,接口中定义要被代理的方法

当使用代理调用方法的时候,底层是去执行代理实例中定义的invoke方法,在invoke中新增内容。

1.Java提供了什么API帮我们创建代理?

Proxy.newProxyInstance()

2.newlProxylnstance方法在创建代理时,需要接几个参数,每个参数的含义是什么?

public static Object newProxyInstance(ClassLoader loader,
                                          Class<?>[] interfaces,
                                          InvocationHandler h)

分别是类加载器,代理需要实现的接口,调用处理器(一个接口需要创建该接口的实现类,并且实现接口的方法invoke)

@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    return null;
}

当代理对象调用了接口中的任何一个方法都会将该方法以method对象的形式传入 invoke方法

  1. proxy 代理对象 2.method 被代理对象的方法 3.args 被代理对象 方法被调用时 传入的实参 数组 4.return null;
posted @ 2025-04-17 21:47  虾11  阅读(10)  评论(0)    收藏  举报