中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術(shù)文檔 > 網(wǎng)絡(luò)編程 > php設(shè)計(jì)模式介紹之注冊模式
php設(shè)計(jì)模式介紹之偽對象模式 回到列表 php設(shè)計(jì)模式介紹之單件模式
 php設(shè)計(jì)模式介紹之注冊模式

作者:HRTSEA 時間: 2008-06-28 文檔類型:翻譯 來自:phpchina

第 1 頁 php設(shè)計(jì)模式介紹之注冊模式 [1]
第 2 頁 php設(shè)計(jì)模式介紹之注冊模式 [2]
第 3 頁 php設(shè)計(jì)模式介紹之注冊模式 [3]
第 4 頁 php設(shè)計(jì)模式介紹之注冊模式 [4]
第 5 頁 php設(shè)計(jì)模式介紹之注冊模式 [5]
第 6 頁 php設(shè)計(jì)模式介紹之注冊模式 [6]
第 7 頁 php設(shè)計(jì)模式介紹之注冊模式 [7]

上文:《PHP設(shè)計(jì)模式介紹》第四章 單件模式

《PHP設(shè)計(jì)模式介紹》第五章 注冊模式

我們通常認(rèn)為避免使用全局變量是一種好的選擇,因此,對象經(jīng)常被作為參數(shù)從一段代碼傳遞到另一段。但是傳遞實(shí)例的一個問題就是對象有時候不知道將要傳遞給誰——?經(jīng)過一個函數(shù)后才被傳遞到真正需要這個對象的函數(shù)。

為了編寫,閱讀,修改代碼的方便,最好能夠減少不同對象的數(shù)量,并且能夠?qū)⒋罅繌V泛使用的對象統(tǒng)一表示為一個單一,常用的對象。

問題

你如何通過單一的全局的對象來獲取對其它對象的引用?

解決方案

“注冊模式”就像“對象的電話簿”——儲存并且能夠取回對對象引用的登記簿。(注:PHP中的“聯(lián)合數(shù)組”也起到了類似“電話簿”的功能。事實(shí)上,“注冊模式”就是圍繞PHP中強(qiáng)大的數(shù)組完成的。)“注冊模式”的一些特性經(jīng)常被包含在“單一模式”中(參見第四章),使得“注冊模式”成為你整個應(yīng)用信息的決定性來源。

注釋:“注冊模式”類主要參考了Martin Fowlerdescribes用java語言實(shí)現(xiàn)的Patterns of Enterprise Application Architecture(企業(yè)應(yīng)用程序體系結(jié)構(gòu)模型)。Marcus Baker謝了一篇詳細(xì)的PHP中應(yīng)用“注冊模式”的文章。該文章可在PHPPatterns.com的站點(diǎn)獲的(http://www.PHPpatterns.com/index.PHP/article/articleview/75/1/1/)。Baker也涉及了一些測試considerations,示范了測試驅(qū)動的開發(fā)方法。

樣本代碼

正如Martin Flower在他的“注冊模式”一文中提及的樣本代碼所示,你可以用各種方法,提供各種接口實(shí)現(xiàn)“注冊模式”。讓我們仔細(xì)探究這種想法,并建立PHP4中的“注冊模式”的一些不同實(shí)現(xiàn)。

讓我們以編寫能儲存并恢復(fù)對象實(shí)例并能對“注冊模式”提供全局訪問的代碼開始。這個類的實(shí)例變量能夠緩存對象,并且“注冊模式”本身是一個“單一模式”。像以前一樣,測試決定需求。我們的第一個測試要確定“注冊模式”是一個“單件模式”類。

// PHP4
class RegistryPHP4TestCase extends UnitTestCase {
function testRegistryIsSingleton() {
$this->assertIsA($reg =& Registry::getInstance(), ‘Registry’);
$this->assertReference($reg, Registry::getInstance());
}
}

這里,要把你在以前幾章“單件模式”中學(xué)到的知識用上,你應(yīng)該能夠很快寫出能夠通過該測試的類。以下是一個滿足測試要求的“注冊模式”類(ignoring the code required to enforce no direct object creation):

class Registry {
function &getInstance() {
static $instance = array();
if (!$instance) $instance[0] =& new Registry;
return $instance[0];
}
}

一個簡單的靜態(tài)數(shù)組就足夠記錄這個單一實(shí)例了。

接下來,讓我們轉(zhuǎn)到“注冊模式”獨(dú)特的特性上面。一個“注冊模式”應(yīng)該提供get() 和set()方法來存儲和取得對象(用一些屬性key)而且也應(yīng)該提供一個isValid()方法來確定一個給定的屬性是否已經(jīng)設(shè)置。

這三個方法的一個簡單實(shí)現(xiàn)在接下來討論。這里是兩個isValid():方法的測試方法。

代碼:

class RegistryPHP4TestCase extends UnitTestCase
{function testRegistryIsSingleton() { /*...*/ }
function testEmptyRegistryKeyIsInvalid()
{$reg =& Registry::getInstance();
$this->assertFalse($reg->isValid('key'));
}
function testEmptyRegistryKeyReturnsNull()
{$reg =& Registry::getInstance();
$this->assertNull($reg->get('key'));
}
}

作者注:assertFalse()
assertFalse()僅僅是assertTrue()的反面,如果第一個參數(shù)預(yù)期是PHP中的布爾值false,測試通過。

出處:phpchina
責(zé)任編輯:bluehearts

上一頁 下一頁 php設(shè)計(jì)模式介紹之注冊模式 [2]

◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論

相關(guān)文章 更多相關(guān)鏈接
php設(shè)計(jì)模式介紹之偽對象模式
php設(shè)計(jì)模式介紹之單件模式
flash+php+mysql簡單留言本教程
php設(shè)計(jì)模式介紹之工廠模式
談?wù)勑率秩绾螌W(xué)習(xí)PHP
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計(jì)比賽 網(wǎng)頁制作 web標(biāo)準(zhǔn) 用戶體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大福“敬•自然”設(shè)計(jì)大賽開啟
國際體驗(yàn)設(shè)計(jì)大會7月將在京舉行
中國國防科技信息中心標(biāo)志征集
云計(jì)算如何讓安全問題可控
云計(jì)算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計(jì)大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺歷
Ps簡單繪制一個可愛的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡單的作品展示頁面
CSS定位機(jī)制之一:普通流
25個最佳最閃亮的Eclipse開發(fā)項(xiàng)目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁 首頁 前頁 后頁 尾頁 頁次:1/71個記錄/頁 轉(zhuǎn)到 頁 共7個記錄

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計(jì)作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會員,你可以注冊 為本站會員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯誤,請用報(bào)告錯誤,以利文檔及時修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評論請用報(bào)告管理員,以利管理員及時刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評論管理人員有權(quán)保留或刪除其管轄評論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報(bào)告錯誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計(jì)之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計(jì)》
犀利開發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2