静态代理
白话理解:父亲拿儿子照片给儿子找对象
关键特点:
- 持有被代理类的引用
- 代理类是一开始就加载到内存中了
动态代理
- 为什么叫动态代理,动态表现在哪些方面? ---- 运行的时候加载到jvm中
- 动态代理的声明,动态代理的声明才是我们写业务代码的地方。动态代理类(ProxyHandler)的声明要实现InvocationHandler类,实现该类后会自动继承方法invoke(。。)
声明类的invoke方法到对是谁调用的
Class ProxyHandler implements InvocationHandler{
People people=null;
//构造函数
public void ProxyHandler(People people){
this.people=people;
}
public Object invoke(Object proxy,Method method,Object args){
before();
method.invoke(people.null);
after();
}
.. before(){
}
.. after(){
}
}
测试类:
public void static main(){
People people=(People)Proxy.newProxyInstance(People.class.getClassLoader(),
new Class[]{People.class},new ProxHandler(new ZhangSan()));
people.eat();--->这里就实现了代理
}