亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

php實現代理模式的方法

2020-03-22 19:51:33
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了關于php實現代理模式的方法,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

代理模式(Proxy Pattern) :

給某一個對象提供一個代 理,并由代理對象控制對原對象的引用。代理模式的英 文叫做Proxy或Surrogate,它是一種對象結構型模式

模式動機:
在某些情況下,一個客戶不想或者不能直接引用一個對 象,此時可以通過一個稱之為“代理”的第三者來實現 間接引用。代理對象可以在客戶端和目標對象之間起到 中介的作用,并且可以通過代理對象去掉客戶不能看到 的內容和服務或者添加客戶需要的額外服務。
通過引入一個新的對象(如小圖片和遠程代理對象)來實現對真實對象的操作或者將新的對 象作為真實對象的一個替身,這種實現機制即 為代理模式,通過引入代理對象來間接訪問一 個對象,這就是代理模式的模式動機。

代理模式包含如下角色:
抽象主題角色(Subject):定義了RealSubject和Proxy公用接口,這樣就在任何使用RealSubject的地方都可以使用Proxy。
真正主題角色(RealSubject):定義了Proxy所代表的真實實體。
代理對象(Proxy):保存一個引用使得代理可以訪問實體,并提供一個與RealSubject接口相同的接口,這樣代理可以用來代替實體(RealSubject)。

UML圖:

代碼實現:

 ?phpheader( Content-type:text/html;Charset=utf-8 //定義RealSubject和Proxy共同具備的東西interface Subject{ function say(); function run();class RealSubject implements Subject{ private $name; function __construct($name){ $this- name = $name; } function say(){  echo $this- name. 在吃飯 br  } function run(){  echo $this- name. 在跑步 br class Proxy implements Subject{ private $realSubject = null; function __construct(RealSubject $realSubject = null){ if(empty($realSubject)){ $this- realSubject = new RealSubject(); }else{  $this- realSubject = $realSubject; } function say(){  $this- realSubject- say(); } function run(){  $this- realSubject- run();}//測試$subject = new RealSubject( 張三 $proxy = new Proxy($subject);$proxy- say();$proxy- run();/*張三在吃飯張三在跑步*/? 

優點:
代理模式能夠協調調用者和被調用者,在一定程度上降低了系 統的耦合度。
遠程代理使得客戶端可以訪問在遠程機器上的對象,遠程機器 可能具有更好的計算性能與處理速度,可以快速響應并處理客戶端請求。
虛擬代理通過使用一個小對象來代表一個大對象,可以減少系 統資源的消耗,對系統進行優化并提高運行速度。
保護代理可以控制對真實對象的使用權限。

缺點:
由于在客戶端和真實主題之間增加了代理對象,因此 有些類型的代理模式可能會造成請求的處理速度變慢。
實現代理模式需要額外的工作,有些代理模式的實現 非常復雜。

適用場景:
根據代理模式的使用目的,常見的代理模式有以下幾種類型:
1、遠程(Remote)代理:為一個位于不同的地址空間的對象提供一個本地 的代理對象,這個不同的地址空間可以是在同一臺主機中,也可是在 另一臺主機中,遠程代理又叫做大使(Ambassador)。
2、虛擬(Virtual)代理:如果需要創建一個資源消耗較大的對象,先創建一個消耗相對較小的對象來表示,真實對象只在需要時才會被真正創建。
3、Copy-on-Write代理:它是虛擬代理的一種,把復制(克?。┎僮餮舆t 到只有在客戶端真正需要時才執行。一般來說,對象的深克隆是一個 開銷較大的操作,Copy-on-Write代理可以讓這個操作延遲,只有對象被用到的時候才被克隆。
4、保護(Protect or Access)代理:控制對一個對象的訪問,可以給不同的用戶提供不同級別的使用權限。
5、緩沖(Cache)代理:為某一個目標操作的結果提供臨時的存儲空間,以便多個客戶端可以共享這些結果。
6、防火墻(Firewall)代理:保護目標不讓惡意用戶接近。
7、同步化(Synchronization)代理:使幾個用戶能夠同時使用一個對象而沒有沖突。
8、智能引用(Smart Reference)代理:當一個對象被引用時,提供一些額外的操作,如將此對象被調用的次數記錄下來等。

幾種常用的代理模式:
1、圖片代理:一個很常見的代理模式的應用實例就是對大圖瀏覽的控制。
用戶通過瀏覽器訪問網頁時先不加載真實的大圖,而是通過代理對象的方法來進行處理,在代理對象的方法中,先使用一個線程向客戶端瀏覽器加載一個小圖片,然后在后臺使用另一個線程來調用大圖片的加載方法將大圖片加載到客戶端。當需要瀏覽大圖片時,再將大圖片在新網頁中顯示。如果用戶在瀏覽大圖時加載工作還沒有完成,可以再啟動一個線程來顯示相應的提示信息。通過代理技術結合多線程編程將真實圖片的加載放到后臺來操作,不影響前臺圖片的瀏覽。
2、遠程代理:遠程代理可以將網絡的細節隱藏起來,使得客戶端不必考慮網絡的存在??蛻敉耆梢哉J為被代理的遠程業務對象是局域的而不是遠程的,而遠程代理對象承擔了大部分的網絡通信工作。
3、虛擬代理:當一個對象的加載十分耗費資源的時候,虛擬代理的優勢就非常明顯地體現出來了。虛擬代理模式是一種內存節省技術,那些占用大量內存或處理復雜的對象將推遲到使用它的時候才創建。
應用程序啟動的時候,可以用代理對象代替真實對象初始化,節省了內存的占用,并大大加速了系統的啟動時間。
4、動態代理:動態代理是一種較為高級的代理模式,它的典型應用就是Spring AOP。
在傳統的代理模式中,客戶端通過Proxy調用RealSubject類的request()方法,同時還在代理類中封裝了其他方法(如preRequest()和postRequest()),可以處理一些其他問題。
如果按照這種方法使用代理模式,那么真實主題角色必須是事先已經存在的,并將其作為代理對象的內部成員屬性。如果一個真實主題角色必須對應一個代理主題角色,這將導致系統中的類個數急劇增加,因此需要想辦法減少系統中類的個數,此外,如何在事先不知道真實主題角色的情況下使用代理主題角色,這都是動態代理需要解決的問題。

另一個例子:

設計模式之代理模式(php實現)

github地址:https://github.com/ZQCard/design_pattern

/** * 在代理模式中,我們創建具有現有對象的對象,以便向外界提供功能接口。 * 1、Windows 里面的快捷方式。 * 2、豬八戒去找高翠蘭結果是孫悟空變的,可以這樣理解:把高翠蘭的外貌抽象出來,高翠蘭本人和孫悟空都實現了這個接口, * 豬八戒訪問高翠蘭的時候看不出來這個是孫悟空,所以說孫悟空是高翠蘭代理類。 * 3、買火車票不一定在火車站買,也可以去代售點。 * 4、一張支票或銀行存單是賬戶中資金的代理。支票在市場交易中用來代替現金,并提供對簽發人賬號上資金的控制。 *優點: * 1、職責清晰。 2、高擴展性。 3、智能化。 * 缺點: * 1、由于在客戶端和真實主題之間增加了代理對象,因此有些類型的代理模式可能會造成請求的處理速度變慢。 * 2、實現代理模式需要額外的工作,有些代理模式的實現非常復雜。 * 例子:從服務器讀取一張圖片的時候,第一次從硬盤讀取,將資源對象代理,第二次讀取的時候就使用代理對象去讀取。 */

(1)Image.class.php(接口)

 ?phpnamespace Proxy;interface Image{ public function display();}

(2)RealImage.class.php

 ?phpnamespace Proxy;class RealImage implements Image{ private $fileName; public function __construct($fileName) { $this- fileName = $fileName; $this- loadFromDisk($fileName); } public function display() { print_r( Displaying . $this- fileName); echo pre/  } private function loadFromDisk($fileName) { print_r( Loading . $fileName); echo pre/ }

(3)ProxyImage.class.php(代理類)

 ?phpnamespace Proxy;class ProxyImage implements Image{ private $realImage; private $fileName; public function __construct($fileName) { $this- fileName = $fileName; } public function display() { if ($this- realImage == null){  $this- realImage = new RealImage($this- fileName); } return $this- realImage- display();}

(4)proxy.php

 ? ( = ( // , / , . .class.php = ProxyImage( a.jpg - 

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

PHP中的操作mysqli的預處理prepare

單例模式連接數據庫的方法

以上就是php實現代理模式的方法的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品网红福利| 最近2019年日本中文免费字幕| 神马国产精品影院av| 精品视频在线播放色网色视频| 91精品中文在线| 国产亚洲精品成人av久久ww| 欧美精品中文字幕一区| 精品女同一区二区三区在线播放| 久久亚洲私人国产精品va| 久久久国产一区二区| 欧美电影在线观看网站| 疯狂做受xxxx欧美肥白少妇| xvideos成人免费中文版| 亚洲人精选亚洲人成在线| 成人久久久久爱| 日韩成人激情视频| 日韩av手机在线观看| 欧美大片免费看| 中文字幕无线精品亚洲乱码一区| 亚洲精品国产suv| 狠狠色香婷婷久久亚洲精品| 精品亚洲一区二区三区四区五区| 日韩在线一区二区三区免费视频| 亚洲人成网站999久久久综合| 国产精品视频区| 欧美福利视频网站| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美疯狂做受xxxx高潮| 欧美激情视频网站| 亚洲欧美激情一区| 欧美精品在线免费观看| 亚洲欧美日韩久久久久久| 国产精品十八以下禁看| 91免费看片在线| 久久精品99无色码中文字幕| 亚洲电影免费观看高清| 蜜月aⅴ免费一区二区三区| 欧美高清激情视频| 一本大道久久加勒比香蕉| 亚洲精品电影在线| 欧美在线视频网站| 精品国产欧美一区二区五十路| 日韩福利伦理影院免费| 国产z一区二区三区| 色无极亚洲影院| 欧美丝袜美女中出在线| 深夜福利一区二区| 亚洲自拍小视频免费观看| 欧美在线视频网站| 久久久精品在线| 成人黄色大片在线免费观看| 欧美亚洲视频在线观看| xxxxx成人.com| 欧美大成色www永久网站婷| 久久久久中文字幕2018| 久久久亚洲网站| 日本高清视频一区| 亚洲午夜未满十八勿入免费观看全集| 国产成人综合精品在线| 自拍亚洲一区欧美另类| 国产精品啪视频| 青青a在线精品免费观看| 亚洲美女精品成人在线视频| 国产精品色午夜在线观看| 激情亚洲一区二区三区四区| 777国产偷窥盗摄精品视频| 日韩福利伦理影院免费| 日韩免费在线播放| 国产精品69精品一区二区三区| 91国内产香蕉| 国产精品人人做人人爽| 欧美日韩国产丝袜美女| 日韩一区二区在线视频| 色偷偷88888欧美精品久久久| 久久久免费电影| 九九热精品视频| 欧美在线视频导航| 国产精品视频精品| 2019中文字幕在线| 日韩欧美成人区| 色哟哟网站入口亚洲精品| 4k岛国日韩精品**专区| 色一区av在线| 日韩精品久久久久久福利| 亚洲成人av资源网| 亚洲国产精品一区二区久| 欧美精品videosex牲欧美| 日韩av在线免费| 久久久欧美精品| 国产亚洲激情在线| 久久久久日韩精品久久久男男| 亚洲日本成人女熟在线观看| 日韩欧美中文字幕在线观看| 欧美午夜性色大片在线观看| 中文字幕精品久久| 欧美成人免费网| 精品福利在线观看| 日本不卡视频在线播放| 中文字幕亚洲综合久久| 亚洲xxxxx性| 欧美日韩一区二区三区在线免费观看| 国产精品视频区1| 国产一区二区在线播放| 91久久精品国产91久久| 欧美激情伊人电影| 日本精品久久电影| 亚洲电影av在线| 91免费在线视频| 欧美另类交人妖| 国产精品69久久久久| 欧美午夜xxx| 欧美专区福利在线| 懂色av影视一区二区三区| 日韩精品视频中文在线观看| 久久久久久国产三级电影| 久久综合网hezyo| 国产精品视频大全| 91成人国产在线观看| 欧美小视频在线观看| 国产精品色婷婷视频| 亚洲直播在线一区| 精品视频www| 欧美成人免费小视频| www.久久色.com| 日本精品视频网站| 欧美疯狂做受xxxx高潮| 国产精品男女猛烈高潮激情| 国产婷婷色综合av蜜臀av| 少妇高潮久久77777| 国产精品人成电影在线观看| 国产精品高潮呻吟久久av无限| 青青草一区二区| 国产成人精品av| 欧美人在线观看| 久久99国产精品自在自在app| 亚洲欧美日韩另类| 在线亚洲国产精品网| 国产精品视频网址| 中文字幕精品一区二区精品| 国产91在线播放精品91| 国产精品美女无圣光视频| 美女视频黄免费的亚洲男人天堂| 91免费精品视频| 91啪国产在线| 法国裸体一区二区| 91久久精品久久国产性色也91| 国产精品2018| 国产精品国产自产拍高清av水多| 国产日韩精品在线播放| 国精产品一区一区三区有限在线| 国内久久久精品| 国产精品视频大全| 国产日韩在线亚洲字幕中文| 国产第一区电影| 国产精品久久久91| 亚洲精品美女视频| 久久久亚洲国产| 欧美猛少妇色xxxxx| 国产精品丝袜一区二区三区| 久久精品电影网站| 国产精品久久999| 国产精品久久久久久亚洲调教| 久久99久久99精品中文字幕| 日韩精品亚洲视频|