動態代理
1. 只學一個方法
方法的作用:在運行時,動態創建一組指定的接口的實現類對象!(在運行時,創建實現了指定的一組接口的對象)
interface A {
}
interface B {
}
Object o = 方法(new Class[]{A.class,B.class})
o它實現了A和B兩個接口!
-------------
Object proxyObject = Proxy.newProxyInstance(ClassLoader classLoader, Class[] interfaces, InvocationHandler h);
1. 方法作用:動態創建實現了interfaces數組中所有指定接口的實現類對象!
參數;
1. ClassLoader:類加載器!
* 它是用來加載器的,把.class文件加載到內存,形成Class對象!
2. Class[] interfaces:指定要實現的接口們
3. InvocationHandler:代理對象的所有方法(個別不執行,getClass())都會調用InvocationHandler的invoke()方法。
---------------------------------------------------------
2. 動態代理作用
最終是學習AOP(面向切面編程),它與裝飾者模式有點相似,它比裝飾者模式還要靈活!
----------------------------------------------------------
InvocationHandler
public Object invoke(Object proxy, Method method, Object[] args);
這個invoke()方法在什麼時候被調用!
1. 在代理對象被創建時?錯誤的!
2. 在調用代理對象所實現接口中的方法時?正確的!
* Object proxy:當前對象,即代理對象!在調用誰的方法!
* Method method:當前被調用的方法(目標方法)
* Object[] args:實參!
----------------------------
目標對象:被增強的對象
代理對象:需要目標對象,然後在目標對象上添加了增強後的對象!
目標方法:增強的內容
代理對象 = 目標對象 + 增強
動態代理筆記
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
內省機制(Introspector)
奔-跑-的-蜗-牛
2018-10-27 05:19:02
模擬Junit4.0
奔-跑-的-蜗-牛
2018-10-27 05:19:02
apache組織的commons
奔-跑-的-蜗-牛
2018-10-27 05:19:02
JavaBean和Map之間的相互轉化
奔-跑-的-蜗-牛
2018-10-27 05:19:02
Junit4.0使用
奔-跑-的-蜗-牛
2018-10-27 05:19:02
黑馬程序員-基礎加強-枚舉
darkleo
2018-09-03 21:18:56
基礎加強-java反射
darkleo
2018-09-03 21:18:56