国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

php教程:php設計模式介紹之代理模式

2020-03-24 17:14:52
字體:
來源:轉載
供稿:網友
上文:《PHP設計模式介紹》第十章 規范模式《PHP設計模式介紹》第十一章 代理模式因為某個對象消耗太多資源,而且你的代碼并不是每個邏輯路徑都需要此對象, 你曾有過延遲創建對象的想法嗎 ( if和else就是不同的兩條邏輯路徑) ? 你有想過限制訪問某個對象,也就是說,提供一組方法給普通用戶,特別方法給管理員用戶?以上兩種需求都非常類似,并且都需要解決一個更大的問題:你如何提供一致的接口給某個對象讓它可以改變其內部功能,或者是從來不存在的功能?問題你怎樣才能在不直接操作對象的情況下,對此對象進行訪問?解決方案代理模式是給某一個對象提供一個替代者(占位者),使之在client對象和subject對象之間編碼更有效率。代理可以提供延遲實例化(lazy instantiation),控制訪問, 等等,包括只在調用中傳遞。 一個處理純本地資源的代理有時被稱作虛擬代理。遠程服務的代理常常稱為遠程代理。強制控制訪問的代理稱為保護代理。下面有一個關于遠程代理的圖(只有一個方法)。 SoapClient是本地對象(客戶端)的媒介,通過調用SoapServer(subject)來獲得天氣信息。全部任務都通過HTTP協議達成,比如創建,傳輸,接收,通過SoapClient類內部的功能解析復雜XML文檔完成遠程通信。網絡返回的結果跟直接調用SoapServer對象API的效果一樣的,因此SoapClient可視為一個本地的代替者(代理),來獲得遠程SoapServer的資源。這里有其他不同種類的代理模式叫做smart 代理。它的作用是:在允許訪問subject對象之前增加一些各種各樣的附加邏輯(additional logic)。(譯注:這里的附加邏輯是指在建立了代理模式的基本結構之后,根據自己的需求在代理模式中添加的代碼)注:Handle-Body 模式
代理模式, 裝飾器模式, 和適配器模式從編碼角度看,都有類似的結構的(后兩個模式在下面兩章講)。
三種模式本質區別在于如何使用它們。
這個結構的其他變種在下面網址可以找到:http://www.c2.com/cgi/wiki?HandleBodyPattern。理的本質是用一個實例化變量對subject對象進行引用,通過調用代理類的方法操作subject類。讓我們看一個代理模式的最簡單形態,首先,你需要創建一個subject類用于代理。// PHP4
html' target='_blank'>class Subject {
function someMethod() {
sleep(1); //do something
}
}下一步,你需要一個代理類,這個類需要實例化subject類用于代理。class ProxySubject {
var $subject;
function ProxySubject() {
$this- subject = new Subject;
}
}在上面的ProxySubject類,在構造器中創建了subject對象(還有其他的可供選擇的方法,比如通過傳遞一個參數給構造器或者用工廠創建subject對象,這些都是同樣可行的)。最后,你的代理類提供所有公有的方法必須讓subject類支持。在這個案例上, someMethod()就是這樣一個方法。class ProxySubject {
var $subject;
function ProxySubject() {
$this- subject = new Subject;
}
function someMethod() {
$this- subject- someMethod();
}
}ProxySubject類通過$this- subject- someMethod()才真正的調用Subject類。代理既可以有一些方法直接調用,又可以在調用之前使用一些附加邏輯(延遲加載,監視)。這里用了一個UML類圖表示ProxySubject類:html教程

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南阳市| 广州市| 呼图壁县| 光山县| 贡山| 宜章县| 东丽区| 基隆市| 调兵山市| 时尚| 三江| 织金县| 栖霞市| 彭阳县| 奉贤区| 开化县| 南漳县| 枣阳市| 木里| 库尔勒市| 万载县| 三穗县| 林州市| 乌拉特中旗| 永平县| 博野县| 右玉县| 洛隆县| 沙湾县| 兴文县| 广州市| 天柱县| 通州区| 成都市| 信阳市| 会理县| 靖江市| 中江县| 闽清县| 施秉县| 宁国市|