代理模式是什么?代理模式的優(yōu)缺點有哪些?

您可能對代理有一定的了解,但您不一定了解代理模式。 代理模式是一種設(shè)計模式,提供對目標對象的額外訪問。 例如,銷售代理充當火車站對象的代理,并提供購票方式。 那么代理模式有多少種呢? 代理模式的優(yōu)缺點是什么? 結(jié)合IP模擬器代理了解一些代理模式的基礎(chǔ)知識。  
 
 
代理方式有幾種
 
1.動態(tài)代理
 
是在jvm運行時通過反射動態(tài)創(chuàng)建對象 ,生成字節(jié)碼對象(構(gòu)造方法參數(shù)InvocationHandler h類型),傳入我們實現(xiàn)InvocationHandler接口的對象,通過反射創(chuàng)建代理對象。 那么當代理對象的任何方法被調(diào)用時,都會調(diào)用h中的invoke(Object proxy, Method method, Object[] args),傳入當前代理對象、當前調(diào)用的方法、方法參數(shù)值。  
 
2.靜態(tài)代理 
 
代理類由程序員創(chuàng)建,然后編譯成 .class 文件。 但缺點是代碼重復,不靈活。 比如在接口A中的所有方法執(zhí)行前添加日志邏輯。如果使用靜態(tài)代理,則必須添加代理類中的每個方法。 如果我想在開頭的方法中添加*添加一個邏輯,在select*開頭的方法中添加另一個邏輯。 那么就很難實現(xiàn)和維護。 如果要解決上面的困惑,就必須使用動態(tài)代理。  
 
代理模型的優(yōu)缺點 
 
1.單個目標對象 
 
 靜態(tài)代理實現(xiàn)比較簡單,只要代理對象包裹了目標對象 ,可以實現(xiàn)增強功能,但靜態(tài)代理只能服務(wù)一個目標對象。 如果目標對象太多,就會產(chǎn)生很多代理類。  
 
2.實現(xiàn)多個類 
 
 靜態(tài)代理通常只代理一個類,動態(tài)代理是在一個接口下代理多個實現(xiàn)類。  
 
3.系統(tǒng)性能消耗
 
 動態(tài)代理必須實現(xiàn)InvocationHandler接口。 通過反射代理的方式,消耗了系統(tǒng)性能,但是可以減少代理類的數(shù)量,使用起來更加靈活。  CGLIB實現(xiàn)動態(tài)代理,不需要代理類必須實現(xiàn)接口。  
 
4.class文件 

編譯時已經(jīng)實現(xiàn)了靜態(tài)代理,代理類是編譯后的實際類文件。 動態(tài)代理是在運行時動態(tài)生成的,即編譯完成后沒有實際的類文件,而是在運行時動態(tài)生成類字節(jié)碼并加載到JVM中。  
 
代理模式有哪些? 代理模式的優(yōu)缺點是什么? 通過以上的了解,相信大家已經(jīng)有了一定的了解。 在某些情況下,一個對象不合適或不能直接引用另一個對象,代理對象可以在客戶端和目標對象之間起到中介作用。 
主站蜘蛛池模板: 波多野结衣系列cesd819| 麻豆国产精品va在线观看不卡| 妖精的尾巴ova| 久久久久久久久久免免费精品| 欧洲精品码一区二区三区| 亚洲第一成年免费网站| caoporm碰最新免费公开视频| 无翼乌无遮挡h肉挤奶百合| 九九全国免费视频| 欧美午夜伦理片| 亚洲欧洲自拍拍偷综合| 狼友av永久网站免费观看| 午夜性a一级毛片| 色哟哟精品视频在线观看| 国产成人亚洲欧美电影| 老司机激情影院| 国产精品福利尤物youwu| 99久久亚洲综合精品成人网| 女王厕便器vk| 一级特黄aaa大片| 我叫王筱惠第1部分阅读| 久久伊人中文字幕麻豆| 日韩国产有码在线观看视频| 亚洲AV无码成人专区| 欧美性狂猛xxxxxbbbbb| 亚洲欧美成人网| 波多野结衣中文字幕一区二区三区 | 久久超碰97人人做人人爱| 欧美jizz18性欧美| 亚洲国产一区二区a毛片| 欧美日韩精品久久久免费观看| 亚洲精品国产精品乱码不99| 特级毛片全部免费播放a一级| 免费人成在线观看网站品爱网| 精品一区二区三区在线观看| 午夜亚洲av永久无码精品| 综合无码一区二区三区| 噗呲噗呲好爽轻点| 美女跪下吃j8羞羞漫画| 四虎国产精品免费久久| 羞羞视频免费网站含羞草|