天天看小說

第79章

大B:“已註冊的用戶擁有發帖,修改自己的註冊信息,修改自己的帖子等功能;而遊客只能看到別人發的帖子,沒有其他權限。爲了簡化代碼,更好的顯示出代理模式的骨架,我們這裡只實現發帖權限的控制。首先我們先實現一個抽象主題角色MyForum,裡面定義了真實主題和代理主題的共同接口——發帖功能。”

代碼如下:

publicinterfaceMyForum

{

publicvoidAddFile();

}

大B:“這樣,真實主題角色和代理主題角色都要實現這個接口。其中真實的主題角色基本就是將這個接口的方法內容填充進來。所以在這裡就不再說它的實現。我們把主要的精力放到關鍵的代理主題角色上。”

代理主題角色代碼大體如下:

publicclassMyForumProxyimplementsMyForum

{

privateRealMyForumforum;

privateintpermission;//權限值

publicMyForumProxy(intpermission)

{

forum=newRealMyForum()

this.permission=permission;

}

//實現的接口

publicvoidAddFile()

{//滿足權限設置的時候才能夠執行操作

//Constants是一個常量類

if(Constants.ASSOCIATOR……permission)

{

forum.AddFile();

}

else

System.out.println(“YouarenotaassociatorofMyForum,pleaseregiste!”);

}

}

大B:“這樣就實現了代理模式的功能。當然你也可以在這個代理類上添加自己的方法來實現額外的服務,比如統計帖子的瀏覽次數,記錄用戶的登錄情況等等。還有一個很常見的代理模式的使用例子就是對大幅圖片瀏覽的控制。”

小A:“當我們在網站上面瀏覽圖文的信息時,圖片位置放置的是經過縮小的,當有人要詳細的查看這個圖片時,可以通過點擊圖片來激活一個鏈接,在一個新的網頁打開要看的圖片。”

大B:“嗯。對。這樣對於提高瀏覽速度是很有好處的,因爲不是每個人都要去看詳細圖上的信息。”

小A:“是嗎?”

大B:“這種情況就可以使用代理模式來全面實現。這裡我將思路表述出來,至於實現就不表述了,至於這種方式在B/S模式下的真實可行性,只是憑空的想象。如果不是可行的方式,那這個例子可以放到一個C/S下來實現,這個是絕對沒有問題的。我們在瀏覽器中訪問網頁時是調用的不是真實的裝載圖片的方法,而是在代理對象中的方法,在這個對象中,先使用一個線程向瀏覽器裝載了一個縮小版的圖片,而在後臺使用另一個線程來調用真實的裝載大圖片的方法將圖片加載到本地,當要瀏覽這個圖片的時候,將其在新的網頁中顯示出來。當然如果在想瀏覽的時候圖片尚未加載成功,可以再啓動一個線程來顯示提示信息,直到加載成功。這樣代理模式的功能就在上面體現的淋漓盡致——通過代理來將真實圖片的加載放到後臺來操作,使其不影響前臺的瀏覽。代理模式能夠協調調用者和被調用者,能夠在一定程度上降低系統的耦合度。不過一定要記住前面講的使用代理模式的條件,不然的話使用了代理模式不但不會有好的效果,說不定還會出問題的。”

第53章第148章第17章第225章第117章第124章第57章第215章第135章第38章第202章第148章第84章第186章第202章第49章第85章第130章第61章第143章第63章第217章第95章第68章第47章第88章第78章第130章第35章第139章第216章第118章第86章第132章第120章第41章第177章第182章第43章第88章第76章第111章第16章第211章第149章第94章第210章第83章第223章第113章第71章第131章第190章第67章第96章第217章第140章第174章第99章第168章第216章第149章第201章第61章第113章第160章第201章第135章第104章第193章第32章第40章第180章第109章第23章第219章第155章第108章第58章第98章第11章第96章第168章第58章第70章第192章第121章第138章第225章第31章第216章第91章第175章第16章第87章第14章第39章第97章第160章
第53章第148章第17章第225章第117章第124章第57章第215章第135章第38章第202章第148章第84章第186章第202章第49章第85章第130章第61章第143章第63章第217章第95章第68章第47章第88章第78章第130章第35章第139章第216章第118章第86章第132章第120章第41章第177章第182章第43章第88章第76章第111章第16章第211章第149章第94章第210章第83章第223章第113章第71章第131章第190章第67章第96章第217章第140章第174章第99章第168章第216章第149章第201章第61章第113章第160章第201章第135章第104章第193章第32章第40章第180章第109章第23章第219章第155章第108章第58章第98章第11章第96章第168章第58章第70章第192章第121章第138章第225章第31章第216章第91章第175章第16章第87章第14章第39章第97章第160章
主站蜘蛛池模板: 康保县| 崇左市| 汉源县| 无棣县| 忻州市| 浦北县| 郯城县| 基隆市| 马山县| 罗城| 汤阴县| 额济纳旗| 吴桥县| 甘孜县| 鹿泉市| 巴东县| 台北市| 内江市| 喀什市| 枣强县| 运城市| 磐石市| 札达县| 耒阳市| 临沂市| 通辽市| 海原县| 宾川县| 鲁甸县| 邵阳市| 高阳县| 拉萨市| 新津县| 灌阳县| 寿宁县| 汉沽区| 蒙自县| 林口县| 阿图什市| 宁南县| 长垣县|