日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

《PHP設(shè)計模式介紹》第十二章 裝飾器模式(2)_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:《PHP設(shè)計模式介紹》第十一章 代理模式
因為某個對象消耗太多資源,而且你的代碼并不是每個邏輯路徑都需要此對象, 你曾有過延遲創(chuàng)建對象的想法嗎 ( if和else就是不同的兩條邏輯路徑) ? 你有想過限制訪問某個對象,也就是說,提供一組方法

樣本代碼:

組件庫包含哪些特性?

1. 容易創(chuàng)建表單元素

2. 將表單元素以html方式輸出

3. 在每個元素上實現(xiàn)簡單的驗證

本例中,我們創(chuàng)建一個包含姓,名,郵件地址,輸入項的表單。所有的區(qū)域都是必須的,而且E-mail必須看起來是有效的E—mail地址。用HTML語言表示,表單的代碼象下面所示:

<form action=”formpage.php” method=”post”>
<b>First Name:</b> <input type=”text” name=”fname” value=””><br>
<b>Last Name:</b> <input type=”text” name=”lname” value=””><br>
<b>Email:</b> <input type=”text” name=”email” value=””><br>
<input type=”submit” value=”Submit”>
</form>

增加一些css樣式后,表單渲染出來如下圖所示:

為建立統(tǒng)一的API,我們創(chuàng)建一個基本的組件類(如果這是php5的例子,這或許會使用接口)。既然所有的組件(表單元素)都必須渲染一些輸出,組建類可以僅僅只有一個paint方法。

class Widget {
function paint() {
return $this->_asHtml();
}
}

讓我們以一個基本的text輸入組件開始。它(組件)必須要包含輸入?yún)^(qū)域的名字(name)而且輸入內(nèi)容可以以HTML的方式渲染。

class TextInput extends Widget {
var $name;
var $value;
function TextInput($name, $value=’’) {
$this->name = $name;
$this->value = $value;
}
function _asHtml() {
return ‘<input type=”text” name=”’.$this->name.’” value=”’
.$this->value.’”>’;
}
}


一個基本的測試可以驗證HTML代碼是否正確——作為參數(shù)傳入給構(gòu)造函數(shù)的名字,值(內(nèi)容)是否傳遞到渲染后的輸出中:

class WidgetTestCase extends UnitTestCase {
function testTextInput() {
$text =& new TextInput(‘foo’, ‘bar’);
$output = $text->paint();
$this->assertWantedPattern(
‘~^<input type=”text”[^>]*>$~i’, $output);
$this->assertWantedPattern(‘~name=”foo”~i’, $output);
$this->assertWantedPattern(‘~value=”bar”~i’, $output);
}
}

TextInput組件工作正常,但是它的用戶接口非常糟糕,它缺少友好的描述,如“First Name” 或者 “Email Address.” 。因此,下一個增加到組件類的合理的特性就是一個描述。我們進(jìn)入有能夠統(tǒng)一增加(一些特性)能力的裝飾器模式。

分享:《PHP設(shè)計模式介紹》第十章 規(guī)范模式
在一個應(yīng)用軟件的成型過程中,一些意想不到的商業(yè)邏輯到處出現(xiàn)。比如,基于價格的考慮,這個任務(wù)必須減少項目;而那個任務(wù)也因為銷售稅而必須選擇合適的比率;而其它的任務(wù)也必須因為其他的特別

來源:模板無憂//所屬分類:PHP教程/更新時間:2008-08-22
相關(guān)PHP教程