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 和 MySQL 时区的一点总结
Mar 26 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
Mar 02 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
Jul 19 PHP
Laravel框架路由配置总结、设置技巧大全
Sep 03 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
Jun 20 PHP
php实现json编码的方法
Jul 30 PHP
深入解析PHP中foreach语句控制数组循环的用法
Nov 30 PHP
php编程每天必学之表单验证
Mar 01 PHP
PHP+Ajax实现验证码的实时验证
Jul 20 PHP
PHP入门教程之操作符与控制结构流程详解
Sep 09 PHP
php实现通过soap调用.Net的WebService asmx文件
Feb 27 PHP
PHP简单实现遍历目录下特定文件的方法小结
May 22 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
从MySQL数据库表中取出随机数据的代码
2007/09/05 PHP
php提示undefined index的几种解决方法
2012/05/21 PHP
CI(CodeIgniter)框架配置
2014/06/10 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
PHP Cookei记录用户历史浏览信息的代码
2016/02/03 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
使用IE6看老赵的博客 jQuery初探
2010/01/17 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
javascript 快速排序函数代码
2012/05/30 Javascript
详解VueJs异步动态加载块
2017/03/09 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
2019/09/05 Javascript
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
原生JS实现无缝轮播图片
2020/06/24 Javascript
python抓取百度首页的方法
2015/05/19 Python
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
初步认识Python中的列表与位运算符
2015/10/12 Python
python中安装模块包版本冲突问题的解决
2017/05/02 Python
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
数字天堂软件测试面试题
2012/12/23 面试题
Ruby如何进行文件操作
2014/07/17 面试题
财务管理专业应届毕业生求职信
2013/09/22 职场文书
外企求职信范文分享
2013/12/31 职场文书
给老师的检讨书
2014/02/11 职场文书
经典婚礼主持词
2014/03/13 职场文书
宣传标语大全
2014/07/01 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
海上钢琴师观后感
2015/06/03 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
深入详解JS函数的柯里化
2021/06/09 Javascript