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编程语言开发动态WAP页面
Oct 09 PHP
PHP 开源AJAX框架14种
Aug 24 PHP
PHP+MySQL 制作简单的留言本
Nov 02 PHP
php 获取百度的热词数据的代码
Feb 18 PHP
php一个找二层目录的小东东
Aug 02 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
Jun 29 PHP
php计算数组不为空元素个数的方法
Jan 27 PHP
thinkphp中ajax与php响应过程详解
Dec 08 PHP
java微信开发之上传下载多媒体文件
Jun 24 PHP
详解PHP中array_rand函数的使用方法
Sep 11 PHP
PHP+Ajax实现的博客文章添加类别功能示例
Mar 29 PHP
Laravel推荐使用的十个辅助函数
May 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查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
PHP实现的浏览器检查类
2016/04/11 PHP
注释PHP和html混合代码的小技巧(分享)
2016/11/03 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
2009/06/14 Javascript
jQuery ui 1.7更新小结
2009/08/15 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
js实现浏览本地文件并显示扩展名的方法
2015/08/17 Javascript
Input文本框随着输入内容多少自动延伸的实现
2017/02/15 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
Angularjs实现下拉框联动的示例代码
2017/08/22 Javascript
vue中 this.$set的用法详解
2019/09/06 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
React服务端渲染原理解析与实践
2021/03/04 Javascript
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
利用PyTorch实现VGG16教程
2020/06/24 Python
Python装饰器结合递归原理解析
2020/07/02 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
德国鞋子网上商店:Omoda.de
2017/03/31 全球购物
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
ALDO加拿大官网:加拿大女鞋品牌
2018/12/22 全球购物
英国最大最好的无人机商店:Drones Direct
2019/07/12 全球购物
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
J2EE包括哪些技术
2016/11/25 面试题
公务员培的训心得体会
2014/09/01 职场文书
统计员岗位职责
2015/02/11 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis