代理模式之動態(tài)代理
動態(tài)代理
自從JDK的版本到1.3以后,java語言通過java.lang.reflect庫中,提供了三個類來直接支持代理模式。
分別是:Proxy,InvocoationHandler和Method。
Proxy類使得設(shè)計師能夠在運行時間創(chuàng)建代理對象
當系統(tǒng)有了一個代理對象后,對源對象的方法調(diào)用會首先被分派給一個調(diào)用處理器(InvocationHandler)//接口
InvocationHandler接口中有一個invoke()方法
程序可以在調(diào)用處理器的invoke方法中截獲這個調(diào)用,進行額外的操作
創(chuàng)建動態(tài)代理對象的步驟:
1.指明一系列的接口來創(chuàng)建一個代理對象
2.創(chuàng)建一個調(diào)用處理器(InvocationHandler)對象
3.將這個代理指定為某個其他對象的代理對象
4.在調(diào)用處理器的invoke方法中采取代理,一方面將調(diào)用傳遞給真實對象,另一方面執(zhí)行各種需要做的操作。
電腦代理商
抽象主題角色:SaleComputer
真實主題角色:ComputerMaker
代理主題角色:ComputerProxy
Java動態(tài)代理的過程:ProxyFunction(我們定義的一個類,由這個類來具體的完成代理過程)
源代碼 http://www.aygfsteel.com/Files/vjame/ProxyDemo02.rar
自從JDK的版本到1.3以后,java語言通過java.lang.reflect庫中,提供了三個類來直接支持代理模式。
分別是:Proxy,InvocoationHandler和Method。
Proxy類使得設(shè)計師能夠在運行時間創(chuàng)建代理對象
當系統(tǒng)有了一個代理對象后,對源對象的方法調(diào)用會首先被分派給一個調(diào)用處理器(InvocationHandler)//接口
InvocationHandler接口中有一個invoke()方法
程序可以在調(diào)用處理器的invoke方法中截獲這個調(diào)用,進行額外的操作
創(chuàng)建動態(tài)代理對象的步驟:
1.指明一系列的接口來創(chuàng)建一個代理對象
2.創(chuàng)建一個調(diào)用處理器(InvocationHandler)對象
3.將這個代理指定為某個其他對象的代理對象
4.在調(diào)用處理器的invoke方法中采取代理,一方面將調(diào)用傳遞給真實對象,另一方面執(zhí)行各種需要做的操作。
電腦代理商
抽象主題角色:SaleComputer
真實主題角色:ComputerMaker
代理主題角色:ComputerProxy
Java動態(tài)代理的過程:ProxyFunction(我們定義的一個類,由這個類來具體的完成代理過程)
源代碼 http://www.aygfsteel.com/Files/vjame/ProxyDemo02.rar
posted on 2008-10-29 18:54 lanjh 閱讀(218) 評論(0) 編輯 收藏 所屬分類: 設(shè)計模式