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

您的位置: 首頁 > 技術(shù)文檔 > 網(wǎng)絡(luò)編程 > php設(shè)計模式介紹之規(guī)范模式
php設(shè)計模式介紹之章代理模式 回到列表 php設(shè)計模式介紹之觀測模式
 php設(shè)計模式介紹之規(guī)范模式

作者:飛鳳 時間: 2008-07-30 文檔類型:合作網(wǎng)站提供 來自:

第 1 頁 php設(shè)計模式介紹之規(guī)范模式 [1]
第 2 頁 php設(shè)計模式介紹之規(guī)范模式 [2]
第 3 頁 php設(shè)計模式介紹之規(guī)范模式 [3]
第 4 頁 php設(shè)計模式介紹之規(guī)范模式 [4]
第 5 頁 php設(shè)計模式介紹之規(guī)范模式 [5]
第 6 頁 php設(shè)計模式介紹之規(guī)范模式 [6]

上文:《PHP設(shè)計模式介紹》第九章 觀測模式

《PHP設(shè)計模式介紹》第十章 規(guī)范模式

在一個應(yīng)用軟件的成型過程中,一些意想不到的商業(yè)邏輯到處出現(xiàn)。比如,基于價格的考慮,這個任務(wù)必須減少項目;而那個任務(wù)也因為銷售稅而必須選擇合適的比率;而其它的任務(wù)也必須因為其他的特別條件而終止。一些商業(yè)規(guī)則是簡單的,只需要不到一兩個布爾比較關(guān)系就夠了,然而它的規(guī)則可能需要費時的估計,需要查詢數(shù)據(jù)庫或者用戶輸入數(shù)據(jù)來引導(dǎo)。

通過書寫代碼可以把抽象(比如一條商業(yè)規(guī)則)轉(zhuǎn)化為具體可見的東西。但是抽象物(比如購物方式,稅率,或者計算海運費等等)都有其進化的方式,而且這些改變很容易難倒一個不幸運的開發(fā)人員。為了保證安全可靠——到目前為止你在這本書所看到的——盡可能的分離封裝那些容易改變的模塊是個很完美的想法。而且,這的確也一個明智的應(yīng)對商業(yè)規(guī)則的策略。

問題描述

有沒有明確的方式來封裝商業(yè)邏輯呢?有沒有一個容易改寫和重用的技術(shù)呢?

解決方案

規(guī)范模式是為驗證和選擇而開發(fā)的:

確認(rèn)一個特殊的對象是否滿足一定的標(biāo)準(zhǔn)

從集合中選擇出滿足給定標(biāo)準(zhǔn)的元素。

規(guī)范模式能讓你有效的組織這些標(biāo)準(zhǔn),并在你的應(yīng)用程序中靈活的使用他們。

代碼重構(gòu)技術(shù)已經(jīng)激發(fā)你的興趣,你決定使用它來提升代碼的清晰度和重用性。規(guī)范模式通過系統(tǒng)化進一步的深化了這一步,它系統(tǒng)把這個結(jié)構(gòu)分解成一個個單獨的對象,這些對象能夠很方便的插入到你的應(yīng)用程序的合適地方。很多情況下,在你的應(yīng)用程序里,規(guī)范對象是參數(shù)化的,而且經(jīng)常被組合在一起來構(gòu)建復(fù)雜的合乎邏輯的表達式。

相關(guān)知識

Eric Evans 和 Martin Fowler 發(fā)表過一篇關(guān)于規(guī)范模型的文章,地址是:http://www.martinfowler.com/apsupp/spec.pdf

這個模式在Eric Evans的書本《動態(tài)驅(qū)動設(shè)計》(“Domain Driven Design”)的第224到273頁有詳細(xì)的介紹。

為了合理的全面覆蓋這個模式,這章被組織成合乎邏輯的三部分。第一部分通過一個純粹的實例來說明基本的模式概念。(Evans 和 Fowler 把這個稱為為“硬編碼規(guī)范Hard Coded Specification”)。接下來的部分演示了如何構(gòu)建一個參數(shù)化規(guī)范模型,它提供了一個更加動態(tài)和靈活的框架來實現(xiàn)規(guī)范模式(或者因此而稱為“參數(shù)化規(guī)范”)的重用。最后一部分,我們開發(fā)了一個“方案工廠”(Policy Factory),它把許多規(guī)范對象集中成一個易于使用的包(package)。

Traveling to Warm Destinations(到溫暖的目的地去旅行)

最近,我和我的家人計劃去度一個假期,我的妻子想去一個“溫暖的地方”。雖然有無數(shù)旅行相關(guān)的站點,但是在我們訪問過的站點中沒有一個站點能夠為每一個目的地提供詳細(xì)的天氣信息。沒辦法,我們不得不轉(zhuǎn)到weather.com然后開始搜索,這是十分的不方便的。現(xiàn)在讓我們來改變這種情況,為一個假定的旅行站點增加一個天氣搜索功能。在這里我們是用規(guī)范模式這個指南來引導(dǎo)你編碼,從而比較旅行者期望的最低溫度和許多目的地的平均溫度

首先,我們創(chuàng)建一些非常簡單的對象。第一個是旅行者(a Traveler),它存儲了首選的最低溫度。

// PHP5
class Traveler {
public $min_temp;
}

接下來我們創(chuàng)建一個對象來表示目的地(Destination)。由于平均溫度是一個關(guān)鍵的標(biāo)準(zhǔn),目的地的構(gòu)建函數(shù)(__constructor)應(yīng)該得到一個十二維的數(shù)組,該數(shù)組的每一個值對應(yīng)一年里面每個月的平均溫度。

class Destination {
protected $avg_temps;
public function __construct($avg_temps) {
$this->avg_temps = $avg_temps;
}
}

目的地(Destination)同樣也還要一個方法,通過調(diào)用這個方法能夠得到這個目的地在指定月份的平均溫度。

class Destination {
//...
public function getAvgTempByMonth($month) {
$key = (int)$month - 1;
if (array_key_exists($key, $this->avg_temps)) {
return $this->avg_temps[$key];
}
}
}

最后,一次旅行(類Trip)就由一個旅行者(類Traveler),一個目的地(類Destination)和一個日期(a Date)聯(lián)合組成。

class Trip {
public $date;
public $traveler;
public $destination;
}

給出上面這些對象,你就可以通過Trip::date得到旅行的月份,并且你能夠比較目的地的月平均溫度和旅行者期望的最低溫度。(這個比較可能不是特別的復(fù)雜,但是你還是需要你自己親自去實現(xiàn))

讓我們看看如何用規(guī)范模式實現(xiàn)“溫暖目的地”的商業(yè)邏輯,并且看看如何應(yīng)用這個模式來驗證每一個目的地并選擇出所有合適的目的地。

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

上一頁 下一頁 php設(shè)計模式介紹之規(guī)范模式 [2]

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

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

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

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

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

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

雜⑦雜⑧ Gold NORMANA V2