
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、java 動(dòng)態(tài)代理類(lèi)的實(shí)現(xiàn)java 動(dòng)態(tài)代理類(lèi)的實(shí)現(xiàn)1、動(dòng)態(tài)代理:為目標(biāo)對(duì)象創(chuàng)建一個(gè)代理類(lèi),該代理類(lèi)擁有目標(biāo)對(duì)象的辦法,屬性,同時(shí)也可添加自己的辦法,比如:日志的添加、校驗(yàn)等。2、實(shí)現(xiàn)條件:在java中規(guī)定,要想產(chǎn)生一個(gè)對(duì)象的代理對(duì)象,那么這個(gè)對(duì)象必需要有一個(gè)接口,所以我們第一步就是設(shè)計(jì)這個(gè)對(duì)象的接口,在接口中定義這個(gè)對(duì)象所具有的行為(辦法)2、應(yīng)用場(chǎng)景:當(dāng)用戶要調(diào)用一個(gè)類(lèi)的辦法時(shí),用戶可以通過(guò)調(diào)用代理,代理通過(guò)接口調(diào)用本來(lái)的類(lèi)的辦法,代理在把辦法給用戶前可以添加一些辦法,如錯(cuò)誤日志,用戶類(lèi)的辦法運(yùn)行的時(shí)光來(lái)監(jiān)聽(tīng)類(lèi)辦法的性能。當(dāng)代理完成時(shí)候就是當(dāng)代理調(diào)用辦法時(shí)候,就會(huì)啟動(dòng)invocationh
2、andler里的invoke辦法(在測(cè)試類(lèi)中代理類(lèi)調(diào)用辦法時(shí)有所體現(xiàn))。3、實(shí)例關(guān)鍵點(diǎn):java在jdk1.5之后提供了一個(gè)"java.lang.reflect.proxy"類(lèi),通過(guò)"proxy"類(lèi)提供的一個(gè)newproxyinstance辦法用來(lái)創(chuàng)建一個(gè)對(duì)象的代理對(duì)象,如下所示:static object newproxyinstance(classloader loader, class interfaces, invocationhandler h)newproxyinstance辦法用來(lái)返回一個(gè)代理對(duì)象,這個(gè)辦法總
3、共有3個(gè)參數(shù),classloader loader用來(lái)指明生成代理對(duì)象用法哪個(gè)類(lèi)裝載器,class interfaces用來(lái)指明生成哪個(gè)對(duì)象的代理對(duì)象,通過(guò)接口指定,invocationhandler h用來(lái)指明產(chǎn)生的這個(gè)代理對(duì)象要做什么事情。所以我們只需要調(diào)用newproxyinstance辦法就可以得到某一個(gè)對(duì)象的代理對(duì)象了。4、實(shí)例如下:1、目標(biāo)對(duì)象接口:public interface people /* * 歌唱 * param name * return */ public string sing(string name); /* * 跳舞 * param name * retur
4、n */ public string dance(string name); 2、實(shí)現(xiàn)接口的目標(biāo)對(duì)象/* * 目標(biāo)類(lèi)對(duì)象 */ public class liudehua implements people override public string sing(string name) return "唱"+name+"歌!好聽(tīng)!" override public string dance(string name) return "跳"+name+"舞!好看!&
5、;quot; 3、代理類(lèi)的實(shí)現(xiàn)/* * 目標(biāo)類(lèi)(liudehua)代理類(lèi) */ public class liudehuaproxy /類(lèi)變量,代理類(lèi)要代理的目標(biāo)對(duì)象 private people ldh = new liudehua(); public people getproxy() return (people) proxy.newproxyinstance(liudehuaproxy.class .getclassloader(), ldh.getclass().getinterfaces(), new invocationhandler() override public obje
6、ct invoke(object proxy, method method, object args) throws throwable /此處可添加目標(biāo)對(duì)象以外的辦法。 /假如調(diào)用的是代理對(duì)象的sing辦法 if (method.getname().equals("sing") return method.invoke(ldh, args); /代理對(duì)象調(diào)用真切目標(biāo)對(duì)象的sing辦法去處理用戶哀求 /假如調(diào)用的是代理對(duì)象的dance辦法 if (method.getname().equals("dance") retur
7、n method.invoke(ldh, args);/代理對(duì)象調(diào)用真切目標(biāo)對(duì)象的dance辦法去處理用戶哀求 return null; ); 4、測(cè)試動(dòng)態(tài)代理類(lèi)調(diào)用過(guò)程public class test public static void main(string args) /代理類(lèi) liudehuaproxy proxy = new liudehuaproxy(); /獲得代理對(duì)象 people p = proxy.getproxy(); /調(diào)用代理對(duì)象的sing辦法 string retvalue = p.sing("冰雨"); system.out.println(retvalu
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能電網(wǎng)工程設(shè)計(jì)考核試卷
- 涂料行業(yè)新技術(shù)展望考核試卷
- 辦公室財(cái)務(wù)報(bào)表編制與分析考核試卷
- 筆的筆身材料創(chuàng)新考核試卷
- 珠海市高一上學(xué)期期末考試數(shù)學(xué)試題
- 四川華新現(xiàn)代職業(yè)學(xué)院《建筑構(gòu)造與制圖》2023-2024學(xué)年第二學(xué)期期末試卷
- 西安汽車(chē)職業(yè)大學(xué)《臨床技能綜合訓(xùn)練(Ⅲ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 潞安職業(yè)技術(shù)學(xué)院《劍橋商務(wù)英語(yǔ)(1)》2023-2024學(xué)年第一學(xué)期期末試卷
- 江西省贛州市南康區(qū)唐西片區(qū)達(dá)標(biāo)名校2025年初三模擬物理試題含解析
- 石家莊理工職業(yè)學(xué)院《健美操主項(xiàng)實(shí)踐教學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 英語(yǔ)-新疆維吾爾自治區(qū)2025年普通高考第二次適應(yīng)性檢測(cè)(新疆二模)試題和答案
- 支氣管哮喘防治指南(2024年版)解讀
- 我國(guó)高校創(chuàng)新創(chuàng)業(yè)教育研究現(xiàn)狀與趨勢(shì)分析
- 人教版小學(xué)五年級(jí)語(yǔ)文下冊(cè)2024-2025學(xué)年度第二學(xué)期第五單元質(zhì)量檢測(cè)試卷含參考答案
- 2025年演出經(jīng)紀(jì)人《思想政治與法律基礎(chǔ)》考前點(diǎn)題卷一
- 2024年煤礦安全規(guī)程(修訂)
- 工業(yè)機(jī)器人現(xiàn)場(chǎng)編程與仿真 6.1 創(chuàng)建動(dòng)態(tài)夾具Smart組件
- 溫泉養(yǎng)老、養(yǎng)生及醫(yī)療保健項(xiàng)目可行性研究報(bào)告
- 信息安全與數(shù)據(jù)備份
- 城市居住區(qū)規(guī)劃設(shè)計(jì)規(guī)范2018版全文
- 情感信息傳播模型-深度研究
評(píng)論
0/150
提交評(píng)論