PHP程序员站--PHP编程开发平台
 当前位置:主页 >> PHP高级编程 >> 高级应用 >> 

PHP设计模式介绍 第十二章 装饰器模式

PHP设计模式介绍 第十二章 装饰器模式

来源:互联网  作者:  发布时间:2010-05-22
若你从事过面向对象的php开发,即使很短的时间或者仅仅通过本书

//代码

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;
}
}


那些就是所有需要为页面添加验证的building blocks 。这里是本游戏(章)结尾的一个截图。以及产生它的页面代码:

//代码

<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>


总结

装饰器模式是对你产生影响的那些模式中的另一个,当你使用他们工作一段时间以后。装饰器模式允许你可以简单的通过严格的继承问题。你可以这样认为装饰器:在运行时可以有效地改变对象的类或者甚至多次—当你在你的脚本不同的场合使用这个类。

也许装饰器模式最重要的一个方面是它的超过继承的能力。“问题”部分展现了一个使用继承的子类爆炸。基于装饰器模式的解决方案,UML类图展现了这个简洁灵活的解决方案。


延伸阅读:
从魔兽看PHP设计模式
《PHP设计模式介绍》导言
PHP设计模式介绍 第一章 编程惯用法
PHP设计模式介绍 第二章 值对象模式
PHP设计模式介绍 第三章 工厂模式
PHP设计模式介绍 第四章 单件模式
PHP设计模式介绍 第五章 注册模式
PHP设计模式介绍 第六章 伪对象模式
PHP设计模式介绍 第七章 策略模式
PHP设计模式介绍 第八章 迭代器模式


PHP设计模式介绍 第九章 观测模式
PHP设计模式介绍 第十章 规范模式
PHP设计模式介绍 第十一章 代理模式
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号