【1】基本概念
代理模式(Proxy):為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。代理者可以作任何東西的接口:網(wǎng)絡(luò)連接、內(nèi)存中的大物件、檔案或其它昂貴或無(wú)法復(fù)制的資源。
【2】簡(jiǎn)單分析
我們先看一下該設(shè)計(jì)模式的UML結(jié)構(gòu)圖:
我們通過(guò)上面的結(jié)構(gòu)圖可以看到:
Subject類:定義了RealSubject和Proxy的共用接口,這樣就可以在任何使用RealSubject的地方都可以用Proxy。
RealSubject類:定義Proxy所代表的真實(shí)實(shí)體。
Proxy類:保存一個(gè)引用使得代理可以訪問(wèn)實(shí)體,并提供一個(gè)與Subject的接口相同的接口,這樣代理就可以用來(lái)替代實(shí)體。
【3】如何用java語(yǔ)言實(shí)現(xiàn)該模式
我們先看下代碼的結(jié)構(gòu)圖,該模式的代碼實(shí)現(xiàn)比較簡(jiǎn)單:
3.1 Subject類:Image.java
3.2 RealSubject類:RealImage.java
3.3 Proxy類:ProxyImage.java
3.4 客戶端測(cè)試類:ProxyClient.java
【4】程序運(yùn)行結(jié)果:
總結(jié)下代理模式的應(yīng)用場(chǎng)合:
第一:遠(yuǎn)程代理,也就是為一個(gè)對(duì)象在不同的地址空間提供局部代表,這樣可以隱藏一個(gè)對(duì)象存在于不同地址空間的事實(shí)。
第二:虛擬代理,是根據(jù)需要?jiǎng)?chuàng)建開銷很大的對(duì)象,通過(guò)它來(lái)存放實(shí)例化需要很長(zhǎng)時(shí)間的真實(shí)對(duì)象。
第三:安全代理,用來(lái)控制真實(shí)對(duì)象訪問(wèn)時(shí)的權(quán)限。
第四:智能引用,是指當(dāng)調(diào)用真實(shí)對(duì)象時(shí),代理處理另外一些事。本文的例子就是采用了這一點(diǎn)。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

