扣丁學(xué)堂Java開發(fā)之ProxyPattern代理模式詳解
2018-03-09 10:12:59
1224瀏覽
今天扣丁學(xué)堂
Java培訓(xùn)之詳細(xì)介紹首代理模式,首先ProxyPattern(即:代理模式),23種常用的面向?qū)ο筌浖脑O(shè)計(jì)模式之一。
代理模式的定義:為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。在某些情況下,一個(gè)對(duì)象不適合或者不能直接引用另一個(gè)對(duì)象,而代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到中介的作用。
優(yōu)點(diǎn):
(1).職責(zé)清晰
真實(shí)的角色就是實(shí)現(xiàn)實(shí)際的業(yè)務(wù)邏輯,不用關(guān)心其他非本職責(zé)的事務(wù),通過后期的代理完成一件完成事務(wù),附帶的結(jié)果就是編程簡(jiǎn)潔清晰。
(2).代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到中介的作用,這樣起到了的作用和保護(hù)了目標(biāo)對(duì)象的作用。
(3).高擴(kuò)展性
結(jié)構(gòu)
一個(gè)是真正的你要訪問的對(duì)象(目標(biāo)類),另一個(gè)是代理對(duì)象,真正對(duì)象與代理
對(duì)象實(shí)現(xiàn)同一個(gè)接口,先訪問代理類再訪問真正要訪問的對(duì)象。
案例代碼
舉個(gè)例子,假如說你走在大街上撿到一張小卡片,上面有一個(gè)美女頭像和一個(gè)電話號(hào)碼,上面寫著招聘保姆請(qǐng)撥打該電話,于是你撥打電話,電話那頭不是美女小姐姐在接電話,而是一個(gè)老大媽在接電話,跟你商量招聘保姆的價(jià)格,那這個(gè)老大媽我們可以認(rèn)為是美女小姐姐的代理對(duì)象,用手動(dòng)代理的方式來模擬一下。一不小心開了個(gè)車,聽不懂的就算啦。。。
目標(biāo)類和代理類所實(shí)現(xiàn)的接口代碼
packagecom.proxy;
?
publicinterfaceWorkInter{
?
voidworkInNight(doublemoney);
voidworkInDay(doublemoney);
?
}
目標(biāo)類代碼
packagecom.proxy;
publicclassXJJimplementsWorkInter{
@Override
publicvoidworkInNight(doublemoney){
System.out.println("滴滴滴~~~夜班干活啦");
}
@Override
publicvoidworkInDay(doublemoney){
//TODOAuto-generatedmethodstub
System.out.println("滴滴滴~~~干活啦");
}
}
代理類代碼
packagecom.proxy;
publicclassXJJProxyimplementsWorkInter{
privateXJJxjj;
publicXJJProxy(){
xjj=newXJJ();
}
@Override
publicvoidworkInNight(doublemoney){
//TODOAuto-generatedmethodstub
}
@Override
publicvoidworkInDay(doublemoney){
System.out.println("代理收取提成"+(money/2));
xjj.workInDay(money/2);//小姐姐在干活
System.out.println("完事送回家");
}
}
?
測(cè)試類代碼
classQiangGeTest{
publicstaticvoidmain(String[]args){
WorkInterxjjProxy=newXJJProxy();//創(chuàng)建代理類對(duì)象
xjjProxy.workInDay(200);
}
}
到這里,jdk的代理模式就分析完了,希望對(duì)愛好學(xué)習(xí)Java開發(fā)的同學(xué)有所幫助,最后想要了解更多內(nèi)容的小伙伴可以登錄扣丁學(xué)堂官網(wǎng)查看??鄱W(xué)堂Java培訓(xùn)機(jī)構(gòu)不僅有專業(yè)的老師和與時(shí)俱進(jìn)的課程體系,還有大量的JavaEE視頻教程供學(xué)員觀看學(xué)習(xí),想要了解學(xué)習(xí)Java的小伙伴快快行動(dòng)吧。Java技術(shù)交流群:670348138。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“Java開發(fā)資訊”的相關(guān)文章>>
標(biāo)簽:
JavaEE視頻教程
JavaEE培訓(xùn)
JavaEE開發(fā)工程師
Java培訓(xùn)
Java開發(fā)程序員
代理模式