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的一个登录的类 [推荐]
Mar 16 PHP
PHP连接access数据库
Mar 27 PHP
PHP session有效期session.gc_maxlifetime
Apr 20 PHP
PHP实现时间轴函数代码
Oct 08 PHP
phpmail类发送邮件函数代码
Feb 20 PHP
smarty自定义函数htmlcheckboxes用法实例
Jan 22 PHP
php生成二维码
Aug 10 PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
详解PHP变量传值赋值和引用赋值变量销毁
Mar 23 PHP
tp5.1 框架路由操作-URL生成实例分析
May 26 PHP
PHP接入支付宝接口失效流程详解
Nov 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中用PDO查询Mysql来避免SQL注入风险的方法
2013/04/25 PHP
php 问卷调查结果统计
2015/10/08 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
Javascript排序算法之合并排序(归并排序)的2个例子
2014/04/04 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
Mac下通过brew安装指定版本的nodejs教程
2018/05/17 NodeJs
jQuery 导航自动跟随滚动的实现代码
2018/05/30 jQuery
玩转Koa之koa-router原理解析
2018/12/29 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
JS通过识别id、value值对checkbox设置选中状态
2020/02/19 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
python编码总结(编码类型、格式、转码)
2016/07/01 Python
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
详解java调用python的几种用法(看这篇就够了)
2020/12/10 Python
Python的信号库Blinker用法详解
2020/12/31 Python
美国从事品牌鞋类零售的连锁店:Famous Footwear
2016/08/25 全球购物
通用C#笔试题附答案
2016/11/26 面试题
中软国际Java程序员机试题
2012/08/19 面试题
优秀交警事迹材料
2014/01/26 职场文书
《童年》教学反思
2014/02/18 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
2014年社区计生工作总结
2014/11/18 职场文书
九年级化学教学反思
2016/02/22 职场文书
餐厅开业活动方案
2019/07/08 职场文书