Java設計模式--代理模式
1、代碼設計的代理模式
代理模式屬于構(gòu)建型模式(Proxy),提供了對目標對象的一種訪問方式; 即通過代理對象訪問目標對象。這樣做的好處是:可以在目標對象實現(xiàn)的基礎上,增強額外的功能操作,即擴展目標對象的功能.這里使用到編程中的一個思想:不要隨意去修改別人已經(jīng)寫好的代碼或者方法,如果需改修改,可以通過代理的方式來擴展該方法。
主要思想: 由被代理對象(業(yè)務類)和代理類組成,代理類通常包括日志代理類、權(quán)限代理類。
動態(tài)代理和靜態(tài)代理的區(qū)別:
1、靜態(tài)代理在代理前就知道要代理的是哪個對象,而動態(tài)代理是運行時才知道;
2、靜態(tài)代理一般只能代理一個類,而動態(tài)代理能代理實現(xiàn)了接口的多個類;
JDK與Cglib動態(tài)代理對比:
1、JDK動態(tài)代理只能代理實現(xiàn)了接口的類,沒有實現(xiàn)接口的類不能實現(xiàn)JDK的動態(tài)代理;
2、Cglib動態(tài)代理是針對類實現(xiàn)代理的,運行時動態(tài)生成被代理類的子類攔截父類方法調(diào)用,因此不能代理聲明為final類型的類和方法;
動態(tài)代理主要應用場景:Spring AOP面向切面底層 ——Spring如何選擇兩種代理模式
1、如果目標對象實現(xiàn)了接口,則默認采用JDK動態(tài)代理;
2、如果目標對象沒有實現(xiàn)接口,則使用Cglib代理;
3、如果目標對象實現(xiàn)了接口,但強制使用了Cglib,則使用Cglib進行代理
2、計算機網(wǎng)絡中的正向代理和反向代理
正向代理: 需要你主動設置代理服務器ip或者域名進行訪問,由設置的服務器ip或者域名去獲取訪問內(nèi)容并返回;
具體:正向代理 是一個位于客戶端和原始服務器(origin server)之間的服務器,為了從原始服務器取得內(nèi)容,客戶端向代理發(fā)送一個請求并指定目標(原始服務器),然后代理向原始服務器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。
正向代理的用途:
?。?)訪問原來無法訪問的資源,如google
(2) 可以做緩存,加速訪問資源
?。?)對客戶端訪問授權(quán),上網(wǎng)進行認證
?。?)代理可以記錄用戶訪問記錄(上網(wǎng)行為管理),對外隱藏用戶信息
反向代理: 不需要你做任何設置,直接訪問服務器真實ip或者域名,但是服務器內(nèi)部會自動根據(jù)訪問內(nèi)容進行跳轉(zhuǎn)及內(nèi)容返回,你不知道它最終訪問的是哪些機器。反向代理(Reverse Proxy)實際運行方式是指以代理服務器來接受internet上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡上的服務器,并將從服務器上得到的結(jié)果返回給internet上請求連接的客戶端,此時代理服務器對外就表現(xiàn)為一個服務器。
反向代理的作用:
(1)保證內(nèi)網(wǎng)的安全,可以使用反向代理提供WAF功能,阻止web攻擊。大型網(wǎng)站,通常將反向代理作為公網(wǎng)訪問地址,Web服務器是內(nèi)網(wǎng)。
(2)負載均衡,通過反向代理服務器來優(yōu)化網(wǎng)站的負載
nginx反向代理
nginx支持配置反向代理,通過反向代理實現(xiàn)網(wǎng)站的負載均衡。拿出一個nginx服務器做反向代理,其他nginx依然是服務器。nginx反向代理可以解決跨域的問題!
正向代理是代理客戶端,為客戶端收發(fā)請求,使真實客戶端對服務器不可見
反向代理是代理服務器端,為服務器收發(fā)請求,使真實服務器對客戶端不可見
總結(jié)
本篇文章就到這里了,希望可以給你帶來一些幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!
相關文章
Eclipse中maven異常Updating Maven Project的統(tǒng)一解決方案
今天小編就為大家分享一篇關于Eclipse中maven異常Updating Maven Project的統(tǒng)一解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12Java Web導出等比例圖片到Excel的實現(xiàn)過程
我們使用Java導出圖片到Excel,打開成功導出的Excel一看,商品對應的圖片都很規(guī)矩的按照我的設置鋪滿了整個單元格,但是,商品圖片卻都變形了,這樣肯定是不行的,于是第一反應就是將圖片等比例導出,所以本文本給大家介紹了如何使用Java Web導出等比例圖片到Excel2023-11-11java8列表中通過stream流根據(jù)對象屬性去重的三種方式
這篇文章主要介紹了java8列表中通過stream流根據(jù)對象屬性去重的三種方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08將SpringBoot的Jar注冊成Windows服務的實現(xiàn)方法
當前項目有個地圖編輯器,后端用的是SpringBoot框架,外網(wǎng)剛好有一臺空閑的Windows服務器就直接拿來用了,將Java程序部署成Windows服務可以用WinSW (Windows Service Wrapper)來實現(xiàn),文中有詳細的操作步驟,需要的朋友可以參考下2023-11-11spring boot加入攔截器Interceptor過程解析
這篇文章主要介紹了spring boot加入攔截器Interceptor過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-10-10Java,JSP,Servlet獲取當前工程路徑(絕對路徑)問題解析
這篇文章主要介紹了Java,JSP,Servlet獲取當前工程路徑(絕對路徑)問題解析,需要的朋友可以參考下。2017-09-09