細(xì)心!用心!耐心!

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

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

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

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

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

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

          您的preOperation()與postOperation()正決定了Proxy模式使用於何種情況,例如一個(gè)Remote Proxy的情況,可以為一個(gè)遠(yuǎn)端真實(shí)物件提供一個(gè)局部代表;Protection Proxy控制對(duì)物件的訪問(wèn),您可以使用它來(lái)作不同級(jí)別、權(quán)限的存取控制;Cache Proxy為一個(gè)物件提供臨時(shí)的儲(chǔ)存,使得許多客戶端都能直接存取它,而不用對(duì)真實(shí)物件直接要求,只有在必要的時(shí)候更新這個(gè)臨時(shí)物件,或是讓客戶直接存取真實(shí)物件。
          posted on 2007-04-17 10:37 張金鵬 閱讀(291) 評(píng)論(0)  編輯  收藏 所屬分類: Structural 模式
          主站蜘蛛池模板: 监利县| 阿图什市| 淮北市| 兴国县| 金塔县| 长汀县| 江门市| 宜丰县| 广南县| 金川县| 博兴县| 武义县| 华容县| 镇沅| 柳江县| 定襄县| 绥阳县| 上高县| 安顺市| 沈阳市| 安阳县| 延川县| 阿拉善盟| 胶州市| 洞口县| 安平县| 阿拉善右旗| 崇文区| 利辛县| 广饶县| 沂南县| 进贤县| 大石桥市| 铁力市| 平潭县| 阿克| 崇阳县| 岑溪市| 明水县| 青川县| 武夷山市|