細心!用心!耐心!

          吾非文人,乃市井一俗人也,讀百卷書,跨江河千里,故申城一游; 一兩滴辛酸,三四年學業(yè),五六點粗墨,七八筆買賣,九十道人情。

          BlogJava 聯(lián)系 聚合 管理
            1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks
          Gof 的書中對Proxy模式的目的給定為:為其它的物件提供一種代理,以控制對這個物件的訪問。由這句話所延伸出來的意思是,根據(jù)您的目的不同,您的代理物件將負有不同的責任,因為產(chǎn)生多種不同的代理情況。

          根據(jù)不同的代理目的,而有不同的代理情況,在Gof中所舉的一個例子是Virtual Proxy,當中舉一個文檔中內(nèi)嵌圖片的例子,假設(shè)您的圖片是在文檔分頁的後面,一開始您並不用直接載入圖片,而使用一個虛代理物件,代替圖片被載入,以求開啟一個文檔的時候,速度能夠加快。當您捲動文檔至該顯示圖片的頁數(shù)時,這時再載入圖片。
          Proxy

          如上圖所示,當文檔被開啟時,ImageProxy物件代理Image物件被載入,在還沒捲動至圖片顯示處時,也就是還沒有調(diào)用 ImageProxy的draw()時,圖片並不會被載入,因而可以加速文檔的開啟與節(jié)省記憶體的使用;如果需要顯示圖片了,ImageProxy的 draw()會被調(diào)用,而這時才真正創(chuàng)建Image物件,以從硬碟中載入圖片。

          Proxy模式的 UML 結(jié)構(gòu)圖如下所示:
          Proxy

          在調(diào)用RealSubject的request()之前,Proxy物件也許會有一些預(yù)先處理的操作,就假設(shè)我們組織為preOperation()與 postOperation()好了,當客戶對Proxy發(fā)出request()請求後,一個可能的時序圖如下所示:
          Proxy

          您的preOperation()與postOperation()正決定了Proxy模式使用於何種情況,例如一個Remote Proxy的情況,可以為一個遠端真實物件提供一個局部代表;Protection Proxy控制對物件的訪問,您可以使用它來作不同級別、權(quán)限的存取控制;Cache Proxy為一個物件提供臨時的儲存,使得許多客戶端都能直接存取它,而不用對真實物件直接要求,只有在必要的時候更新這個臨時物件,或是讓客戶直接存取真實物件。
          posted on 2007-04-17 10:37 張金鵬 閱讀(296) 評論(0)  編輯  收藏 所屬分類: Structural 模式
          主站蜘蛛池模板: 沾化县| 察雅县| 延长县| 红桥区| 蓝山县| 德江县| 武强县| 星子县| 四会市| 忻城县| 万山特区| 阿尔山市| 辽阳市| 介休市| 图木舒克市| 太康县| 小金县| 庆云县| 二手房| 察雅县| 高唐县| 佛学| 开远市| 朝阳县| 宁南县| 高平市| 嘉禾县| 大名县| 天门市| 迁西县| 万载县| 盐边县| 镇安县| 大石桥市| 广丰县| 贺州市| 高州市| 华容县| 靖安县| 诏安县| 奉贤区|