《PHP設(shè)計(jì)模式介紹》第三章 工廠模式(4)_PHP教程
推薦:《PHP設(shè)計(jì)模式介紹》第二章 值對(duì)象模式在所有的最簡(jiǎn)單的程序中,大多數(shù)對(duì)象都有一個(gè)標(biāo)識(shí),一個(gè)重要的商業(yè)應(yīng)用對(duì)象,例如一個(gè)Customer或者一個(gè)SKU,有一個(gè)或者更多的屬性---id,name,email地址,這樣可以把它從同一個(gè)類的其他實(shí)例區(qū)分開
所有這些測(cè)試Color類功能的行為都在正常和期望的環(huán)境下實(shí)現(xiàn)的。但是每一個(gè)設(shè)計(jì)精良的類都必須考慮邊界情況。例如, 被送入構(gòu)造器執(zhí)行的數(shù)值如果是負(fù)數(shù),或者大于255的數(shù)值,或者根本不是數(shù)值,結(jié)果會(huì)出現(xiàn)什么呢?一個(gè)好的類定義應(yīng)該適應(yīng)測(cè)試中的多種邊界情況。
function testColorBoundaries() {
$color =& new Color(-1);
$this->assertErrorPattern(‘/out.*0.*255/i’);
$color =& new Color(1111);
$this->assertErrorPattern(‘/out.*0.*255/i’);
}
注:assertErrorPattern
assertErrorPattern() 作用是:將產(chǎn)生的php錯(cuò)誤進(jìn)行正確的正則表達(dá)式匹配。如果這個(gè)錯(cuò)誤不匹配指定的模式, 將不通過測(cè)試。
在那些測(cè)試的基礎(chǔ)上,Color類將得到更進(jìn)一步改進(jìn):
|
class Color { |
注:重構(gòu) - 提取方法
當(dāng)你的代碼中有兩個(gè)或者兩個(gè)以上部分的代碼相似的時(shí)候, 可以將它們提取出來成為一個(gè)獨(dú)立的方法,并按它的用途命名。當(dāng)你的類的方法代碼中頻頻出現(xiàn)相同的成分,提取代碼作為一個(gè)方法是非常有用的。
class Color {
var $r=0;
var $g=0;
var $b=0;
function Color($red=0, $green=0, $blue=0) {
$this->r = $this->validateColor($red);
$this->g = $this->validateColor($green);
$this->b = $this->validateColor($blue);
}
function validateColor($color) {
$check = (int)$color;
if ($check < 0 || $check > 255) {
trigger_error(“color ‘$color’ out of bounds, “
.”please specify a number between 0 and 255”);
} else {
return $check;
}
}
function getRgb() {
return sprintf(‘#XXX’, $this->r, $this->g, $this->b);
}
}
分享:《PHP設(shè)計(jì)模式介紹》第一章 編程慣用法學(xué)習(xí)一門新的語言意味著要采用新的慣用法。這章將介紹或者可能重新強(qiáng)調(diào)一些慣用法。你會(huì)發(fā)現(xiàn)這些慣用法在你要在代碼中實(shí)現(xiàn)設(shè)計(jì)模式時(shí)候是非常有用的。
在這里總結(jié)的許多編程慣用法都是很值得
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國(guó)語言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
- 教程說明:
PHP教程-《PHP設(shè)計(jì)模式介紹》第三章 工廠模式(4)
。