亚洲香蕉成人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
国产精品av在线| 久久久久久久国产| 国产精品亚洲精品| 26uuu另类亚洲欧美日本老年| 亚洲欧美在线x视频| 日韩国产一区三区| 日韩福利伦理影院免费| 国产剧情日韩欧美| 久久99热这里只有精品国产| 国产女同一区二区| 色偷偷综合社区| 成人性教育视频在线观看| 亚洲综合中文字幕68页| 国产欧美一区二区三区四区| 亚洲人午夜精品免费| 91产国在线观看动作片喷水| 成人精品网站在线观看| 久久精视频免费在线久久完整在线看| 国产精品旅馆在线| 91精品久久久久久久久久入口| 精品久久香蕉国产线看观看亚洲| 2019中文字幕在线观看| 欧美在线视频一区二区| 久久亚洲国产成人| 日韩在线免费视频观看| 亚洲欧美日韩精品久久| 亚洲欧美在线x视频| 欧美大肥婆大肥bbbbb| 日韩在线观看免费高清完整版| 国产精品老牛影院在线观看| 国产精品福利小视频| 欧美精品免费看| 久久久人成影片一区二区三区观看| 欧美精品激情blacked18| 综合av色偷偷网| 欧美成人黄色小视频| 欧美激情视频给我| 97在线视频精品| 中文字幕精品一区久久久久| 欧美日韩黄色大片| 久久国产天堂福利天堂| 欧美精品18videos性欧美| 欧美日韩一区二区三区在线免费观看| 精品久久久久人成| 成人免费淫片视频软件| 国产精品一区二区三区久久| 日本aⅴ大伊香蕉精品视频| 久久精品国产久精国产思思| 色婷婷成人综合| 久久这里只有精品99| 亚洲伊人一本大道中文字幕| 九九久久综合网站| 欧美精品免费看| 成人中文字幕+乱码+中文字幕| 久久夜色精品亚洲噜噜国产mv| 亚洲国产毛片完整版| 国产一区二区三区精品久久久| 92看片淫黄大片看国产片| 91精品国产91| 国产成人精品av| 97视频免费在线观看| 久久香蕉精品香蕉| 久久久久久久999精品视频| 黄色成人在线播放| 97人人做人人爱| 久久久亚洲影院你懂的| 一本色道久久88精品综合| 国产精品视频久久| 国产精品欧美日韩| 亚洲男女自偷自拍图片另类| 一区二区福利视频| 亚洲国产小视频在线观看| 欧美肥臀大乳一区二区免费视频| 成人国产精品免费视频| 亚洲色图国产精品| 成人黄色网免费| 日本伊人精品一区二区三区介绍| 92版电视剧仙鹤神针在线观看| 欧美人交a欧美精品| 久久久久久97| 欧美国产日韩中文字幕在线| 日韩精品在线电影| 日韩国产高清污视频在线观看| 91在线精品视频| 成人性生交大片免费看视频直播| 日韩av在线免费看| 久久中文字幕国产| 国产日韩换脸av一区在线观看| 国内免费精品永久在线视频| 国产精品男女猛烈高潮激情| 精品视频www| 国产精品久在线观看| 国产美女精品视频| 日韩av男人的天堂| 国产自产女人91一区在线观看| 大胆欧美人体视频| 国产成人在线精品| 欧美极品欧美精品欧美视频| 国产噜噜噜噜噜久久久久久久久| 欧美日韩成人黄色| 成人在线国产精品| 久久夜色精品国产欧美乱| 久久久久日韩精品久久久男男| 久久久久久久久久久久久久久久久久av| 日韩网站免费观看高清| 国产精品嫩草影院久久久| 国产成人自拍视频在线观看| 国产亚洲人成a一在线v站| 精品国产区一区二区三区在线观看| 91国偷自产一区二区三区的观看方式| 国产成人精品在线视频| 中文字幕亚洲激情| 欧美精品福利视频| 97精品免费视频| 欧美亚洲另类激情另类| 精品国产一区二区三区久久久| 午夜免费日韩视频| 欧美精品一本久久男人的天堂| 亚洲精品免费网站| 亚洲成人网av| 色七七影院综合| 性色av一区二区三区在线观看| 日韩在线观看你懂的| 欧美激情综合亚洲一二区| 九色精品免费永久在线| 国产精品久久一区主播| 午夜精品一区二区三区视频免费看| 久久国产精品影片| 成人免费直播live| 97在线免费视频| 亚洲午夜av久久乱码| 国产精品视频网站| 中文字幕欧美国内| 亚洲国产天堂网精品网站| 亚洲大胆美女视频| 欧美国产一区二区三区| 91精品美女在线| 九九热这里只有精品免费看| www.久久草.com| 欧美成人一区在线| 久久精品国产清自在天天线| 国产一级揄自揄精品视频| 国产精品成人一区| 日韩成人在线视频| 久久精品欧美视频| 懂色av中文一区二区三区天美| 中文字幕一区二区三区电影| 精品美女国产在线| 97精品欧美一区二区三区| 欧美成人免费播放| 亚洲欧美制服第一页| 亚洲视频视频在线| 欧美精品在线视频观看| 欧美日韩ab片| 少妇av一区二区三区| 欧美精品制服第一页| 国产精品久久久久久久久免费| 亚洲精品日韩丝袜精品| 久久99精品久久久久久琪琪| 亚洲欧美一区二区精品久久久| 欧美在线视频免费观看| 97欧美精品一区二区三区| 欧洲日本亚洲国产区| 草民午夜欧美限制a级福利片|