麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

php教程:php設(shè)計(jì)模式介紹之代理模式

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

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产毛片网站 | 欧美xxxxx视频 | 久久99精品久久久久久秒播放器 | 久久性生活免费视频 | 国产成人在线观看免费网站 | 中文字幕网在线 | av观看国产| 91久久精品一二三区 | 国产69精品久久久久久 | 国产一区二精品区在线 | 亚洲精品一区二区三区大胸 | 免费放黄网站在线播放 | 国产成人高清在线观看 | 国产免费传媒av片在线 | 国产日本欧美在线观看 | 91免费高清视频 | 看国产精品 | 国产精品九九久久一区hh | 97se亚洲综合在线韩国专区福利 | 羞羞视频在线免费 | 国产精品一品二区三区四区18 | 极品国产91在线网站 | 深夜毛片免费看 | 久久久久久久久久久久久九 | 国产女同玩人妖 | 91精品国产乱码久久久久久久久 | 黄色网战入口 | 二区三区在线观看 | 国产精品久久久久久久久久久久久久久 | 精品国产一区二区三区四区在线 | 国产小视频一区 | 久久久久久久亚洲视频 | 免费毛片电影 | 日韩电影av在线 | 成人在线不卡 | 国产精品看片 | 亚洲午夜一区二区三区 | 在线亚州| 亚洲生活片 | 国产一区二区在线观看视频 | 中文字幕1区2区 |