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 在线翻译函数代码
May 07 PHP
php 数组排序 array_multisort与uasort的区别
Mar 24 PHP
php修改时间格式的代码
May 29 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
Oct 03 PHP
用Simple Excel导出xls实现方法
Dec 06 PHP
适用于初学者的简易PHP文件上传类
Oct 29 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
Mar 16 PHP
Yii2中事务的使用实例代码详解
Sep 07 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
Feb 28 PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 PHP
PHP下载文件函数与用法示例
Sep 27 PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 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 静态变量与自定义常量的使用方法
2010/01/26 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
2014/12/04 PHP
php实现的IMEI限制的短信验证码发送类
2015/05/05 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
JavaScript 入门·JavaScript 具有全范围的运算符
2007/10/01 Javascript
JS截取字符串常用方法整理及使用示例
2013/10/18 Javascript
JavaScript使用concat连接数组的方法
2015/04/06 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
onmouseover事件和onmouseout事件全面理解
2016/08/15 Javascript
JavaScript  event对象整理及详细介绍
2016/10/10 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
js中的DOM模拟购物车功能
2017/03/22 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
2017/05/18 Javascript
JavaScript实现瀑布流图片效果
2017/06/30 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
JS实现在线ps功能详解
2019/07/31 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
Python3.5装饰器典型案例分析
2019/04/30 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
Django serializer优化类视图的实现示例
2020/07/16 Python
Python定义一个Actor任务
2020/07/29 Python
英国儿童设计师服装和玩具购物网站:Zac & Lulu
2020/10/19 全球购物
教你怎样写好自我评价
2013/10/05 职场文书
开业庆典邀请函
2014/01/08 职场文书
教师简历自我评价
2014/02/03 职场文书
聚美优品励志广告词
2014/03/14 职场文书
4s店市场专员岗位职责
2014/04/09 职场文书
调解协议书
2014/04/16 职场文书
计划生育证明书写要求
2014/09/17 职场文书
社会实践心得体会范文
2016/01/14 职场文书
基于Python实现一个春节倒计时脚本
2022/01/22 Python
JAVA springCloud项目搭建流程
2022/05/11 Java/Android