一今穿、靜態(tài)代理的問題
違反了開閉原則茂装,每代理一個接口,就要修改代理類
二虐唠、動態(tài)代理的原理
1搀愧、對象的生命周期
java文件 ——>字節(jié)碼文件——>class 對象——>生成對象——>銷毀
2、動態(tài)代理的過程
Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(), new Class<?>[] { Foo.class }, handler);
不通過java文件疆偿,自己生成字節(jié)碼咱筛,然后生成class對象,最后生成代理對象
生成字節(jié)碼時杆故,已經(jīng)繼承了Proxy父類迅箩,實現(xiàn)了要代理的接口;
生成class對象反番,用到了classloader和字節(jié)碼
生成代理對象時沙热,把用來增強的處理類InvocationHandler傳入