<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      設計模式培訓之五:代理模式

      查看本人文章索引請通過http://www.rzrgm.cn/seesea125/archive/2012/04/17/2453256.html

      一、 什么是代理模式?

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

      代理模式結構圖:

      未命名

       

      二、 clip_image014代理模式都用在一些什么場合?

      1. 遠程代理,也就是為一個對象在不同的地址空間提供局部代表。這樣可以隱藏一個對象存在不兩只的地址空間的事實。(他所使用到的例子。Webservice在.net 中的應用,當我應用程序的項目中加入一個Web引用,引用一個WebService,此時會在項目中生成一個Webreference的文件夾和一些文件,其實它們就是代理,這就使得客戶端程序調用代理就可以解決遠程訪問的問題。)

      2. 虛擬代理,是根據需要創建開銷很大的對象。通過它來存放實例化需要很長時間的真實對象。(例子,比如說你打一個很大的Html網頁時,里面可能有很多的文字和圖片,但你還是可以很快打開它,些時你所看到的是所有文字,但圖片卻是一張一張地下載后才能看到。那些未打開的圖片框,就是通過虛擬代理來替代了真實的圖片,此時代理存儲了真實圖片的路徑和尺寸。)

      3. 安全代理,用來控件真實對象訪問時的權限。(例子 不同的訪問權限的時候。)

      4. 智能指引,是指當調用真實的對象時,代理處理另外一些事。(例子:如計算真實對旬的引用次數,這樣當該對象沒有引用時,可以自動釋放它ak當第一次引用一個持久對象時,將它裝入內存或在訪問一個實際對象前,檢查是否已經鎖定它,以確保其他對象不能改變它。它們都是通過代理在訪問一個對象時附加一些內務處理。)

      三、 下面寫一段實現代理模式的代碼.

      經過上面的實戰,我們來思考一下

      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();
                 }
      }
      
      class Program
      {
            static void Main(string[] args)
            {
                  Proxy pr = new Proxy();
                  pr.Request();
                  Console.Read();
            }
      }

       

      四、疑問解答:

      1. 為什么用代理模式?

          答:客戶端無法直接操作實際對象。么為什么無法直接操作?一種情況是你需要調用的對象在另外一臺機器上,你需要跨越網絡才能 訪問,如果讓你直接coding去調用,你需要處理網絡連接、處理打包、解包等等非常復雜的步驟,所以為了簡化客戶端的處理,我們使用代理模式,在客戶端 建立一個遠程對象的代理,客戶端就象調用本地對象一樣調用該代理,再由代理去跟實際對象聯系,對于客戶端來說可能根本沒有感覺到調用的東西在網絡另外一 端,這實際上就是Web Service的工作原理。另一種情況雖然你所要調用的對象就在本地,但是由于調用非常耗時,你怕影響你正常的操作,所以特意找個代理來處理這種耗時情 況,一個最容易理解的就是Word里面裝了很大一張圖片,在word被打開的時候我們肯定要加載里面的內容一起打開,但是如果等加載完這個大圖片再打開 Word用戶等得可能早已經跳腳了,所以我們可以為這個圖片設置一個代理,讓代理慢慢打開這個圖片而不影響Word本來的打開的功能。

      2. 為什么要抽象這個接口呢?

          答:其實抽象接口有一個最大的原因就是約束雙方的行為!什么意思呢?其實就是我逼迫Proxy 必須實現某些方法,而這些方法恰恰是對外公開的主要業務方法。當然也可以靠程序員自律,但是多一個約束總歸是好的,至少如果沒有實現指定方法我們可以在編 譯期就發現錯誤,總比執行時才能發現錯誤要好。另外的原因可能都得歸結到使用接口的好處上去了,這里不再贅述,自己去查接口的文章介紹了。

      3. 如查實現權限驗證,為何要對該類添加一個代理類?而不是在此類里面直接加上權限判斷呢?

          答:在程序設計中有一個類的單一性原則問題,這個原則很簡單,就是每個類的功能盡可能單一。為 什么要單一,因為只有功能單一這個類被改動的可能性才會最小,就拿剛才的例子來說,如果你將權限判斷放在當前類里面,當前這個類就既要負責自己本身業務邏 輯、又要負責權限判斷,那么就有兩個導致該類變化的原因,現在如果權限規則一旦變化,這個類就必需得改,顯然這不是一個好的設計。

      posted @ 2012-05-18 17:40  趙學智  閱讀(2382)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 宜阳县| 久久天天躁狠狠躁夜夜躁2o2o| 亚洲嫩模喷白浆在线观看| 国产熟女一区二区三区四区| 国产精品亚洲综合网一区| 亚洲色欲在线播放一区二区三区| 欧洲中文字幕一区二区| 在线观看国产成人av天堂| 99热精国产这里只有精品| 欧美性猛交xxxx黑人猛交| 26uuu另类亚洲欧美日本| 94人妻少妇偷人精品| 少妇人妻无码专区在线视频| 最新精品露脸国产在线| 男人天堂亚洲天堂女人天堂| 国产av一区二区午夜福利| 2021亚洲国产精品无码| 国产农村老熟女国产老熟女| 精品国产中文字幕懂色| 国产精品人妻一码二码尿失禁| 国产精品十八禁一区二区| 动漫av网站免费观看| 99国产精品99久久久久久| 亚洲一区二区三区水蜜桃 | 国产成人精品午夜2022| 色综合欧美亚洲国产| 国产另类ts人妖一区二区| 国产精品久久久久久久久人妻| 久热视频这里只有精品6| 亚洲国产精品一区二区第一页| 国产精品久久久久鬼色| 97国产揄拍国产精品人妻| 在线观看中文字幕码国产| 国产女人看国产在线女人| 乱人伦中文字幕成人网站在线 | 亚洲国产欧美在线人成AAAA| 久久精品人妻无码专区| 亚洲欧美自偷自拍视频图片| 日本欧美大码a在线观看| 国产av第一次处破| 亚洲精品天堂一区二区|