C#物件導向設計之——代理模式(十三)

來源:互聯網
上載者:User

標籤:

一、前言

代理模式是為其他對象提供一種代理以控制對這個對象的訪問。

二、結構圖

三、執行個體代碼
namespace 代理模式{    class Program    {        static void Main(string[] args)        {            Proxy proxy = new Proxy();            proxy.Request();            Console.Read();        }    }    abstract class Subject    {        public abstract void Request();    }    class RealSubject : Subject    {        public override void Request()        {            Console.WriteLine("真實的請求");        }    }    class Proxy : Subject    {        RealSubject realSubject;        public override void Request()        {            if (realSubject == null)            {                realSubject = new RealSubject();            }            realSubject.Request();        }    }}

 

四、總結

什麼時候使用代理模式呢?
第一,遠程代理,也就是為一個對象在不同的地址空間提供局部代表,這樣就可以隱藏一個對象存在於不同地址空間的事實。例如在.net中的webservice,當我們在應用程式中加入一個Web引用,引用一個webservice,則此時在項目中會產生一個WebReference的檔案夾和一些檔案,其實它們就是代理,這就使得用戶端程式滴啊用代理就可以解決遠端存取的問題。
第二,虛擬代理,根據需要建立開銷很大的對象,通過它來存放執行個體化需要很長時間的真實對象,這樣達到效能的最佳化,例如開啟一個很大的HTML頁面,裡面有很多文字和圖片,那些文字載入了,但是圖片沒有載入完,只看到圖片佔用一定大小的空間,等待內容的填充,這就是通過虛擬代理來替代真實的圖片,此時代理儲存了真實的圖片的路徑和尺寸,這就是瀏覽器中用到的模式進行最佳化下載。
第三,安全代理,用來控制真實對象的存取權限。
第四,智能指引,指當調用真實的對象時,代理處理另外一些事,例如計算真實對象的引用次數,這樣當該對象沒有引用時,可以自動釋放它,或者當第一次引用一個持久對象時,將它裝入記憶體,或在訪問一個實際對象前,檢查是否已經鎖定它了,以保證其他對象不能改變它。

C#物件導向設計之——代理模式(十三)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.