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 相关文章推荐
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
一个php Mysql类 可以参考学习熟悉下
Jun 21 PHP
PHP中用正则表达式清除字符串的空白
Jan 17 PHP
数据库中排序的对比及使用条件详解
Feb 23 PHP
关于zend studio 出现乱码问题的总结
Jun 23 PHP
php实现图片转换成ASCII码的方法
Apr 03 PHP
PHP用反撇号执行外部命令
Apr 14 PHP
PHP Streams(流)详细介绍及使用
May 12 PHP
php强制用户转向www域名的方法
Jun 19 PHP
PHP整合七牛实现上传文件
Jul 03 PHP
带你了解PHP7 性能翻倍的关键
Nov 19 PHP
CodeIgniter视图使用注意事项
Jan 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
《魔兽争霸3:重制版》更新 多项视觉效果调整
2020/05/04 魔兽争霸
php生成文件
2007/01/15 PHP
PHP中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
DOM相关内容速查手册
2007/02/07 Javascript
JavaScript开发时的五个注意事项
2007/12/08 Javascript
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
Jquery 数据选择插件Pickerbox使用介绍
2012/08/24 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
vue父子组件的数据传递示例
2017/03/07 Javascript
js中字符型和数值型数字的互相转化方法(必看)
2017/04/25 Javascript
JavaScript 中的 this 简单规则
2017/09/19 Javascript
jQuery插件Validation表单验证详解
2018/05/26 jQuery
JavaScript基于对象方法实现数组去重及排序操作示例
2018/07/10 Javascript
Canvas实现微信红包照片效果
2018/08/21 Javascript
javascript 高级语法之继承的基本使用方法示例
2019/11/11 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
Python中isnumeric()方法的使用简介
2015/05/19 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
2019/11/08 Python
pymysql 插入数据 转义处理方式
2020/03/02 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
10个示例带你掌握python中的元组
2020/11/23 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
几个SQL的面试题
2014/03/08 面试题
在职员工证明书
2014/09/19 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python
利用js实现简单开关灯代码
2021/11/23 Javascript