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 相关文章推荐
php5中date()得出的时间为什么不是当前时间的解决方法
Jun 30 PHP
php获取地址栏信息的代码
Oct 08 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
Jun 17 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
Jul 01 PHP
php按字符无乱码截取中文的方法
Mar 27 PHP
php session 写入数据库
Feb 13 PHP
Apache PHP MySql安装配置图文教程
Aug 27 PHP
php中array_slice和array_splice函数解析
Oct 18 PHP
PHP+JavaScript实现无刷新上传图片
Feb 21 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
Laravel实现短信注册的示例代码
May 29 PHP
PHP中isset、empty的用法与区别示例详解
Nov 05 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和MySql中计算时间差的方法
2011/04/22 PHP
将php数组输出html表格的方法
2014/02/24 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
javascript 对象比较实现代码
2009/04/27 Javascript
js 数组克隆方法 小结
2010/03/20 Javascript
jQuery 源码分析笔记(5) jQuery.support
2011/06/19 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
nodejs个人博客开发第一步 准备工作
2017/04/12 NodeJs
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
Vue.js简易安装和快速入门(第二课)
2017/10/17 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
解决layer 动态加载select 失效的问题
2019/09/18 Javascript
原生JS实现留言板
2020/03/26 Javascript
python多重继承新算法C3介绍
2014/09/28 Python
基于pip install django失败时的解决方法
2018/06/12 Python
实例介绍Python中整型
2019/02/11 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
2019/06/21 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
Python 如何创建一个简单的REST接口
2020/07/30 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
美国鲜花递送:UrbanStems
2021/01/04 全球购物
芭比波朗加拿大官方网站:Bobbi Brown Cosmetics CA
2020/11/05 全球购物
外企测试工程师面试题
2015/02/01 面试题
毕业生医学检验求职信
2013/10/16 职场文书
房屋租赁意向书
2014/04/01 职场文书
大型营销活动计划书
2014/04/28 职场文书
工作所在部门证明
2014/09/21 职场文书
云南省召开党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
2014年材料员工作总结
2014/11/19 职场文书
KTV员工管理制度
2015/08/06 职场文书