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面向对象全攻略 (八)重载新的方法
Sep 30 PHP
php ss7.5的数据调用 (笔记)
Mar 08 PHP
PHP 多维数组排序(usort,uasort)
Jun 30 PHP
php新建文件自动编号的思路与实现
Jun 27 PHP
PHP json_encode中文乱码问题的解决办法
Sep 09 PHP
PHP实现从远程下载文件的方法
Mar 12 PHP
WordPress自定义时间显示格式
Mar 27 PHP
Yii安装与使用Excel扩展的方法
Jul 13 PHP
PHP使用递归算法无限遍历数组示例
Jan 13 PHP
PHP中时间加减函数strtotime用法分析
Apr 26 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
Jun 06 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
Oct 18 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数据库操作分页类
2008/06/04 PHP
php中return的用法实例分析
2015/02/28 PHP
Laravel框架在本地虚拟机快速安装的方法详解
2018/06/11 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
2019/11/09 PHP
js获取下拉列表的值和元素个数示例
2014/05/07 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
Web安全之XSS攻击与防御小结
2018/12/13 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
Python 内置函数complex详解
2016/10/23 Python
Python 专题六 局部变量、全局变量global、导入模块变量
2017/03/20 Python
Python编程修改MP3文件名称的方法
2017/04/19 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
tensorflow 获取变量&amp;打印权值的实例讲解
2018/06/14 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
python多线程http压力测试脚本
2019/06/25 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
2020/01/06 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
纯HTML5+CSS3制作生日蛋糕代码
2016/11/16 HTML / CSS
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
工厂会计员职责
2014/02/06 职场文书
房屋委托书范本
2014/04/04 职场文书
美术兴趣小组活动总结
2014/07/07 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers