php设计模式 Builder(建造者模式)


Posted in PHP onJune 26, 2011
<?php 
/** 
* 建造者模式 
* 
* 将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示 
*/ 
class Product 
{ 
public $_type = null; 
public $_size = null; 
public $_color = null; public function setType($type) 
{ 
echo "set product type<br/>"; 
$this->_type = $type; 
} 
public function setSize($size) 
{ 
echo "set product size<br/>"; 
$this->_size = $size; 
} 
public function setColor($color) 
{ 
echo "set product color<br/>"; 
$this->_color = $color; 
} 
} 
$config = array( 
"type"=>"shirt", 
"size"=>"xl", 
"color"=>"red", 
); 
// 没有使用bulider以前的处理 
$oProduct = new Product(); 
$oProduct->setType($config['type']); 
$oProduct->setSize($config['size']); 
$oProduct->setColor($config['color']); 

// 创建一个builder类 
class ProductBuilder 
{ 
var $_config = null; 
var $_object = null; 
public function ProductBuilder($config) 
{ 
$this->_object = new Product(); 
$this->_config = $config; 
} 
public function build() 
{ 
echo "--- in builder---<br/>"; 
$this->_object->setType($this->_config['type']); 
$this->_object->setSize($this->_config['size']); 
$this->_object->setColor($this->_config['color']); 
} 
public function getProduct() 
{ 
return $this->_object; 
} 
} 
$objBuilder = new ProductBuilder($config); 
$objBuilder->build(); 
$objProduct = $objBuilder->getProduct();
PHP 相关文章推荐
php中实现简单的ACL 完结篇
Sep 07 PHP
解析thinkphp中的导入文件标签
Jun 20 PHP
php程序员应具有的7种能力小结
Nov 27 PHP
PHP扩展程序实现守护进程
Apr 16 PHP
PHP实现将textarea的值根据回车换行拆分至数组
Jun 10 PHP
yii数据库的查询方法
Dec 28 PHP
基于命令行执行带参数的php脚本并取得参数的方法
Jan 25 PHP
PHP中key和current,next的联合运用实例分析
Mar 29 PHP
php微信公众号开发(4)php实现自定义关键字回复
Dec 15 PHP
PHP写API输出的时用echo的原因详解
Apr 28 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
May 08 PHP
php简单计算权重的方法示例【适合抽奖类应用】
Jun 10 PHP
php设计模式 DAO(数据访问对象模式)
Jun 26 #PHP
php设计模式 Decorator(装饰模式)
Jun 26 #PHP
php设计模式 Delegation(委托模式)
Jun 26 #PHP
php设计模式 Facade(外观模式)
Jun 26 #PHP
php设计模式 Factory(工厂模式)
Jun 26 #PHP
php设计模式 Interpreter(解释器模式)
Jun 26 #PHP
php设计模式 Strategy(策略模式)
Jun 26 #PHP
You might like
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
谈谈关于php的优点与缺点
2013/04/11 PHP
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
js代码实现微博导航栏
2015/07/30 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
jQuery EasyUI 的EasyLoader功能介绍
2010/09/12 Javascript
ExtJS4中使用mixins实现多继承示例
2013/12/03 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
JavaScript绑定事件监听函数的通用方法
2016/05/14 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
微信小程序实现手势滑动效果
2019/08/26 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
python求列表交集的方法汇总
2014/11/10 Python
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
Python @property原理解析和用法实例
2020/02/11 Python
Python matplotlib修改默认字体的操作
2020/03/05 Python
python实现二分查找算法
2020/09/18 Python
物业经理求职自我评价
2013/09/22 职场文书
工商管理专业大学生职业生涯规划范文
2014/03/09 职场文书
专题组织生活会思想汇报
2014/10/01 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
2015年司机工作总结
2015/04/23 职场文书
杨善洲电影观后感
2015/06/04 职场文书
社团招新宣传语
2015/07/13 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书
MySQL中varchar和char类型的区别
2021/11/17 MySQL
Linux7.6二进制安装Mysql8.0.27详细操作步骤
2021/11/27 MySQL