細心!用心!耐心!

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

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

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

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

          Proxy模式的 UML 結構圖如下所示:
          Proxy

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

          您的preOperation()與postOperation()正決定了Proxy模式使用於何種情況,例如一個Remote Proxy的情況,可以為一個遠端真實物件提供一個局部代表;Protection Proxy控制對物件的訪問,您可以使用它來作不同級別、權限的存取控制;Cache Proxy為一個物件提供臨時的儲存,使得許多客戶端都能直接存取它,而不用對真實物件直接要求,只有在必要的時候更新這個臨時物件,或是讓客戶直接存取真實物件。
          posted on 2007-04-17 10:37 張金鵬 閱讀(296) 評論(0)  編輯  收藏 所屬分類: Structural 模式
          主站蜘蛛池模板: 历史| 湖南省| 伊金霍洛旗| 内江市| 潍坊市| 吉木乃县| 内黄县| 凉城县| 武夷山市| 定日县| 锦屏县| 本溪市| 如皋市| 海城市| 汉川市| 慈溪市| 大宁县| 灵石县| 石嘴山市| 惠来县| 柘城县| 满洲里市| 康平县| 马边| 芦山县| 武乡县| 湛江市| 莱西市| 泽库县| 丹东市| 从化市| 清原| 静安区| 黄梅县| 会东县| 琼结县| 青龙| 麦盖提县| 阿拉善右旗| 靖边县| 贡嘎县|