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

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

作者:wangyun522 時(shí)間: 2008-06-30 文檔類型:翻譯 來自: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ì)模式介紹》第六章 偽對象模式

面向?qū)ο蟮木幊讨载S富多彩,部分是由于對象間的相互聯(lián)系與作用。一個(gè)單一的對象就能封裝一個(gè)復(fù)雜的子系統(tǒng),使那些很復(fù)雜的操作能夠通過一些方法的調(diào)用而簡化。(無所不在的數(shù)據(jù)庫連接就是這樣的一個(gè)對象實(shí)例。)

然而經(jīng)常有這樣的情況,對象間的交互性是如此復(fù)雜以至于我們不得不面對類似“先有雞還是先有蛋”這樣傷腦筋的問題:如何創(chuàng)建并測試這樣一個(gè)對象,他要么依賴于很多已創(chuàng)建的對象,要么依賴于其他一些難以意識(shí)到的情況,如整個(gè)數(shù)據(jù)庫的創(chuàng)建和測試。

問題

如何分隔并測試一個(gè)與其他對象和資源有關(guān)的代碼段?又如何再創(chuàng)建一個(gè)或多個(gè)對象、程序來驗(yàn)證你的代碼能正常運(yùn)行?

解決方案

當(dāng)用situ(或在一個(gè)仿真的程序環(huán)境中)測試一個(gè)對象代價(jià)不菲或困難重重時(shí),就可用偽對象來模擬這個(gè)行為。偽對象有同真實(shí)對象一樣的接口,但卻能提供預(yù)編譯響應(yīng),能跟蹤方法調(diào)用,并驗(yàn)證調(diào)用次序。

偽對象是測試的“特別力量”。他們被秘密訓(xùn)練,滲透進(jìn)目標(biāo)代碼,模擬并監(jiān)視通信方式,回報(bào)結(jié)果。偽對象有助于查找和消除程序漏洞并能支持更多正常調(diào)試環(huán)境下的“防危險(xiǎn)”操作。

注:The ServerStub
偽對象模式是另一種測試模式ServerStub的擴(kuò)展。ServerStub模式替代一個(gè)資源并返回其方法所調(diào)用的相應(yīng)值。當(dāng)其參與指定次序的方法的調(diào)用時(shí)ServerStub就成了偽對象。

其并非是一個(gè)設(shè)計(jì)模式

本章與其他章不同,因?yàn)閭螌ο笫且粋(gè)測試模式而不是設(shè)計(jì)模式。這類似于一個(gè)附加的章節(jié),但對它的使用        確實(shí)很值得你納入到編碼進(jìn)程中。另一個(gè)不同是我們不再關(guān)注這個(gè)模式如何編碼之類的基礎(chǔ)問題,而是強(qiáng)調(diào)         如何在SimpleTest中使用偽對象。

本章先舉一個(gè)非常簡單的例子來示范SimpleTest下偽對象的基本機(jī)制。然后向你演示如何使用偽對象幫助重構(gòu)已有代碼與如何測試新的解決方案。

樣本代碼

偽對象是對象在測試中的一個(gè)替代品,用它測試代碼更加簡便。例如,替代一個(gè)真實(shí)的數(shù)據(jù)連接——這個(gè)真實(shí)的數(shù)據(jù)連接由于一些原因而不能實(shí)際連接——你就可以創(chuàng)建一個(gè)偽對象來模擬。這意味著偽對象需要準(zhǔn)確地回應(yīng)代碼中所調(diào)用的相同的應(yīng)用程序接口。

讓我們創(chuàng)建一個(gè)偽對象來替代一個(gè)簡單的名為Accumulator的類,這是一個(gè)求和的類。如下是最初的Accumulator類:

// PHP4
class Accumulator {
var $total=0;
function add($item) {
$this->total += $item;
}
function total() {
return $this->total;
}
}

這個(gè)類中add()函數(shù)先累加值到$total變量中,再交由total()函數(shù)返回 。 一個(gè)簡單的累加也可以如下面這樣(下面的代碼被編寫為一個(gè)函數(shù),但它也可以寫成一個(gè)類)。

function calc_total($items, &$sum) {
foreach($items as $item) {
$sum->add($item);
}
}
function calc_tax(&$amount, $rate=0.07) {
return round($amount->total() * $rate,2);
}

第一個(gè)函數(shù)calc_total()用一個(gè)累加的動(dòng)作求一系列值的和。下面是簡單的測試:

class MockObjectTestCase extends UnitTestCase {
function testCalcTotal() {
$sum =& new Accumulator;
calc_total(array(1,2,3), $sum);
$this->assertEqual(6, $sum->total());
}
}

讓我們關(guān)注第二個(gè)例子。假設(shè)實(shí)現(xiàn)一個(gè)真實(shí)的累加動(dòng)作的代價(jià)很大。那么用一個(gè)簡單的對象來替代它并回應(yīng)相關(guān)代碼就是很好的做法了。使用SimpleTest,你可以用如下代碼創(chuàng)建一個(gè)偽累加動(dòng)作:

Mock::generate(‘Accumulator’);
class MockObjectTestCase extends UnitTestCase {

// ...
function testCalcTax() {
$amount =& new MockAccumulator($this);
$amount->setReturnValue(‘total’,200);
$this->assertEqual(
14, calc_tax($amount));
}
}

為了使用偽對象,具有代表性的做法是你親自寫一個(gè)新類(并不要求馬上做)。幸運(yùn)的是,SimpleTest有一種容易的手段來實(shí)現(xiàn) Mock::generate() 方法。

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

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

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

相關(guān)文章 更多相關(guān)鏈接
php設(shè)計(jì)模式介紹之策略模式
php設(shè)計(jì)模式介紹之注冊模式
php設(shè)計(jì)模式介紹之單件模式
flash+php+mysql簡單留言本教程
php設(shè)計(jì)模式介紹之工廠模式
關(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ì)大會(huì)7月將在京舉行
中國國防科技信息中心標(biāo)志征集
云計(jì)算如何讓安全問題可控
云計(jì)算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會(huì)
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計(jì)大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺(tái)歷
Ps簡單繪制一個(gè)可愛的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡單的作品展示頁面
CSS定位機(jī)制之一:普通流
25個(gè)最佳最閃亮的Eclipse開發(fā)項(xiàng)目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁 首頁 前頁 后頁 尾頁 頁次:1/71個(gè)記錄/頁 轉(zhuǎn)到 頁 共7個(gè)記錄

藍(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)系,我們將立即刪除修改。

您的評(píng)論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評(píng)論。如果您不是本站會(huì)員,你可以注冊 為本站會(huì)員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯(cuò)誤,請用報(bào)告錯(cuò)誤,以利文檔及時(shí)修改。
不評(píng)分 1 2 3 4 5
注意:請不要在評(píng)論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評(píng)論請用報(bào)告管理員,以利管理員及時(shí)刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評(píng)論管理人員有權(quán)保留或刪除其管轄評(píng)論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評(píng)論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評(píng)論文檔 | 報(bào)告錯(cuò)誤  
專業(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