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

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

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

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

//代碼

class FormHandler {
// ...
function validate(&$form, &$post) {
$valid = true;
// first name required
if (!strlen($post->get(‘fname’))) {
$form[0] =& new Invalid($form[0]);
$valid = false;
}
// last name required
if (!strlen($post->get(‘lname’))) {
$form[1] =& new Invalid($form[1]);
$valid = false;}
// email has to look real
if (!preg_match(‘~\w @(\w \.) \w ~’
,$post->get(‘email’))) {
$form[2] =& new Invalid($form[2]);
$valid = false;
}
return $valid;
}
}


那些就是所有需要為頁面添加驗(yàn)證的building blocks 。這里是本游戲(章)結(jié)尾的一個截圖。以及產(chǎn)生它的頁面代碼:

//代碼

<html>
<head>
<title>Decorator Example</title>
<style type=”text/css”>
.invalid {color: red; }
.invalid input { background-color: red; color: yellow; }
#myform input { position: absolute; left: 110px; width: 250px; font-weight: bold;}
</style>
</head>
<body>
<form action=”<?php echo $_SERVER[‘PHP_SELF’]; ?>” method=”post”>
<div id=”myform”>
<?php error_reporting(E_ALL);
require_once ‘widgets.inc.php’;
$post =& Post::autoFill();
$form = FormHandler::build($post);
if ($_POST) { FormHandler::validate($form, $post);
}
foreach($form as $widget) {
echo $widget->paint(), “<br>\n”;
}
?>
</div>
<input type=”submit” value=”Submit”>
</form>
</body>
</html>


總結(jié)

裝飾器模式是對你產(chǎn)生影響的那些模式中的另一個,當(dāng)你使用他們工作一段時間以后。裝飾器模式允許你可以簡單的通過嚴(yán)格的繼承問題。你可以這樣認(rèn)為裝飾器:在運(yùn)行時可以有效地改變對象的類或者甚至多次—當(dāng)你在你的腳本不同的場合使用這個類。

也許裝飾器模式最重要的一個方面是它的超過繼承的能力。“問題”部分展現(xiàn)了一個使用繼承的子類爆炸�;谘b飾器模式的解決方案,UML類圖展現(xiàn)了這個簡潔靈活的解決方案。

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

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