小A:“為什麼使用代理模式?”
大B:“1、授權機制不同級別的使用者對同一物件擁有不同的訪問權利,如Jive論壇系統中,就使用Proxy進行授權機制控制,訪問論壇有兩種人:註冊使用者和遊客(未註冊使用者),Jive中就透過類似ForumProxy這樣的代理來控制這兩種使用者對論壇的訪問許可權。2、某個客戶端不能直接操作到某個物件,但又必須和那個物件有所互動。”
小A:“能不能舉個例子啊?”
大B:“可以,就舉例兩個具體情況:1、如果那個物件是一個是很大的圖片,需要花費很長時間才能顯示出來,那麼當這個圖片包含在文件中時,使用編輯器或瀏覽器開啟這個文件,開啟文件必須很迅速,不能等待大圖片處理完成,這時需要做個圖片Proxy來代替真正的圖片。2、如果那個物件在Internet的某個遠端伺服器上,直接操作這個物件因為網路速度原因可能比較慢,那我們可以先用Proxy來代替那個物件。總之原則是,對於開銷很大的物件,只有在使用它時才建立,這個原則可以為我們節省很多寶貴的Java記憶體。所以,有些人認為Java耗費資源記憶體,我以為這和程式編制思路也有一定的關係。”
小A:“那它一般用在哪些地方哩?”
大B:“現實中,Proxy應用範圍很廣,現在流行的分佈計算方式RMI和Corba等都是Proxy模式的應用。”