91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中的代理模式詳細介紹

發布時間:2021-07-23 10:22:42 來源:億速云 閱讀:139 作者:chen 欄目:開發技術

這篇文章主要講解了“PHP中的代理模式詳細介紹”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“PHP中的代理模式詳細介紹”吧!

代理模式(Proxy),它是對簡單處理程序(或指針)的增強,用于引用一個對象:這個指針被代理(Proxy)對象取代,代理對象位于客戶端(Client)和真實執行程序之間,指針有一個可被多個目標利用的鉤子。

從技術上講,這種模式在客戶端和真實主體(RealSubject)之間插入一個代理對象,維護subject接口和用不同的方式委派它的方法。代理可以透明地做任何事情:懶散創建RealSubject或載入數據,與其它機器交換消息,寫時復制策略等。這與HTTP代理有點類似,其客戶端(如瀏覽器)和應用程序依賴于與HTTP服務器的聯系,代理在管理連接時可以完成其它任務,如訪問控制和緩存大型下載文件。

PHP中的代理模式詳細介紹

代理模式的對象圖與裝飾模式對象圖在結構上類似,但表達的目的各有不同,裝飾者給對象動態增加行為,而代理則控制來自客戶端的訪問。此外,代理只在需要時才創建RealSubject。

參與者:
◆客戶端(Client):取決于主體(Subject)實現;
◆主體(Subject):RealSubject的抽象;
◆真實主體(RealSubject):完成代價高昂的工作或包含大量的數據;
◆代理(Proxy):為Client提供一個與Subject一致的引用,僅在需要時才創建RealSubject實例或與RealSubject實例通信。

下面是兩個被廣泛使用的代理模式例子:
1、對象-關系映射(Orms)在運行中創建代理作為實體類的子類,以實現懶散加載(虛擬代理),這個代理會覆蓋所有實體方法,在前面追加一個載入程序,在方法被真正調用前不會包含任何數據,Orms代理支持對象間的雙向關系,不用加載整個數據庫,因為它們被置于當前加載對象圖的邊界。

2、Java RMI使用遠程代理對象(遠程代理),當它們的方法被調用時,代理序列化參數,執行網絡上的請求,委托調用另一個節點上的真實對象,這種技術允許透明地調用遠程對象,不用擔心它們是否在同一臺機器上,但這種透明度很容易會使執行速度變慢。

下面的代碼示例實現了一個ImageProxy,推遲了圖像數據的加載。

復制代碼 代碼如下:


/** 
 * Subject interface. 
 * Client depends only on this abstraction. 
 */
interface Image 

    public function getWidth(); 

    public function getHeight(); 

    public function getPath(); 

    /** 
     * @return string   the image's byte stream 
     */
    public function dump(); 


/** 
 * Abstract class to avoid repetition of boilerplate code in the Proxy 
 * and in the Subject. Only the methods which can be provided without 
 * instancing the RealSubject are present here. 
 */
abstract class AbstractImage implements Image 

    protected $_width; 
    protected $_height; 
    protected $_path; 
    protected $_data; 

    public function getWidth() 
    { 
 return $this->_width; 
    } 

    public function getHeight() 
    { 
 return $this->_height; 
    } 

    public function getPath() 
    { 
 return $this->_path; 
    } 


/** 
 * The RealSubject. Always loads the image, even if no dump of the data 
 * is required. 
 */
class RawImage extends AbstractImage 

    public function __construct($path) 
    { 
 $this->_path = $path; 
 list ($this->_width, $this->_height) = getimagesize($path); 
 $this->_data = file_get_contents($path); 
    } 

    public function dump() 
    { 
 return $this->_data; 
    } 


/** 
 * Proxy. Defers loading the image data until it becomes really mandatory. 
 * This class does its best to postpone the very expensive operations 
 * such as the actual loading of the BLOB. 
 */
class ImageProxy extends AbstractImage 

    public function __construct($path) 
    { 
 $this->_path = $path; 
 list ($this->_width, $this->_height) = getimagesize($path); 
    } 

    /** 
     * Creates a RawImage and exploits its functionalities. 
     */
    protected function _lazyLoad() 
    { 
 if ($this->_realImage === null) { 
     $this->_realImage = new RawImage($this->_path); 
 } 
    } 

    public function dump() 
    { 
 $this->_lazyLoad(); 
 return $this->_realImage->dump(); 
    } 


/** 
 * Client class that does not use the data dump of the image. 
 * Passing blindly a Proxy to this class and to other Clients makes sense 
 * as the data would be loaded anyway when Image::dump() is called. 
 */
class Client 

    public function tag(Image $img) 
    { 
 return '; 
    } 


$path = '/home/giorgio/shared/Immagini/kiki.png'; 
$client = new Client(); 

$image = new RawImage($path); // loading of the BLOB takes place 
echo $client->tag($image), "\n"; 

$proxy = new ImageProxy($path); 
echo $client->tag($proxy), "\n"; // loading does not take place even here

感謝各位的閱讀,以上就是“PHP中的代理模式詳細介紹”的內容了,經過本文的學習后,相信大家對PHP中的代理模式詳細介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

闻喜县| 克东县| 龙川县| 盐边县| 饶阳县| 清原| 革吉县| 岳普湖县| 德令哈市| 延边| 奉贤区| 英超| 梁山县| 闸北区| 临高县| 玉山县| 绥江县| 木兰县| 佛冈县| 北京市| 凌云县| 黔江区| 商洛市| 张北县| 牡丹江市| 来凤县| 重庆市| 民乐县| 怀来县| 大名县| 永年县| 泽州县| 西盟| 华坪县| 武陟县| 沁阳市| 鸡泽县| 旺苍县| 溧阳市| 临洮县| 新巴尔虎右旗|