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设计模式 注册表模式
Feb 05 PHP
PHP中__get()和__set()的用法实例详解
Jun 04 PHP
解析php中curl_multi的应用
Jul 17 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
Apr 08 PHP
destoon公司主页模板风格的添加方法
Jun 20 PHP
PHP实现多图片上传类实例
Jul 26 PHP
PHP中的socket_read和socket_recv区别详解
Feb 09 PHP
PHP使用ODBC连接数据库的方法
Jul 18 PHP
PHP观察者模式定义与用法实例分析
Mar 22 PHP
php连接sftp的作用以及实例代码
Sep 23 PHP
Laravel Eloquent ORM 多条件查询的例子
Oct 10 PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 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小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
php MessagePack介绍
2013/10/06 PHP
php生成圆角图片的方法
2015/04/07 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
js调用后台servlet方法实例
2013/06/09 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
使用JQuery FancyBox插件实现图片展示特效
2015/11/16 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
2017/02/14 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
2017/10/15 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
python opencv调用笔记本摄像头
2019/08/28 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
Python reduce函数作用及实例解析
2020/05/08 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
Python Scrapy图片爬取原理及代码实例
2020/06/12 Python
运动会通讯稿400字
2014/01/28 职场文书
护士个人自我鉴定
2014/03/24 职场文书
基层党建工作宣传标语
2014/06/24 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
暑期社会实践证明书
2014/11/17 职场文书
通知书大全
2015/04/27 职场文书
学校捐书活动总结
2015/05/08 职场文书
学习委员竞选稿
2015/11/20 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js