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调用三种数据库的方法(3)
Oct 09 PHP
从网上搜到的phpwind 0day的代码
Dec 07 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
Feb 17 PHP
教你如何使用php session
Oct 28 PHP
分享一个超好用的php header下载函数
Jan 31 PHP
PHP永久登录、记住我功能实现方法和安全做法
Apr 27 PHP
php简单统计字符串单词数量的方法
Jun 19 PHP
php redis实现文章发布系统(用户投票系统)
Mar 04 PHP
PHP fopen函数用法实例讲解
Feb 15 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
Oct 24 PHP
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
Apr 01 PHP
PHP 技巧 * SVG 保存为图片(分享图生成)
Apr 02 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版(4)
2006/10/09 PHP
PHP 批量删除 sql语句
2009/06/05 PHP
php分页示例分享
2014/04/30 PHP
php输入流php://input使用浅析
2014/09/02 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
IE中createElement需要注意的一个问题
2010/07/13 Javascript
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
探讨js中的双感叹号判断
2013/11/11 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
JS和JQ的event对象区别分析
2014/11/24 Javascript
jQuery中removeClass()方法用法实例
2015/01/05 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
PageSwitch插件实现100种不同图片切换效果
2015/07/28 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
js实现时分秒倒计时
2019/12/03 Javascript
Python文件监听工具pyinotify与watchdog实例
2018/10/15 Python
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
2019/01/29 Python
python-tkinter之按钮的使用,开关方法
2019/06/11 Python
TensorFlow实现简单的CNN的方法
2019/07/18 Python
PyTorch之图像和Tensor填充的实例
2019/08/18 Python
浅谈Django中的QueryDict元素为数组的坑
2020/03/31 Python
基于CSS3实现立方体自转效果
2016/03/01 HTML / CSS
医务人员自我评价
2014/01/26 职场文书
创业资金计划书
2014/02/06 职场文书
互联网电子商务专业毕业生求职信
2014/03/18 职场文书
纪律教育月活动总结
2014/08/26 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
民间借贷借条范本
2015/05/25 职场文书
CSS极坐标的实例代码
2021/06/03 HTML / CSS
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python
golang生成并解析JSON
2022/04/14 Golang