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 相关文章推荐
解析Ubuntu下crontab命令的用法
Jun 24 PHP
php中如何使对象可以像数组一样进行foreach循环
Aug 09 PHP
PHP URL路由类实例
Nov 12 PHP
ThinkPHP模版中导入CSS和JS文件的方法
Nov 29 PHP
解决微信授权回调页面域名只能设置一个的问题
Dec 11 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
Jul 04 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
Oct 12 PHP
PHP chunk_split()函数讲解
Feb 12 PHP
因str_replace导致的注入问题总结
Aug 08 PHP
深入学习微信网址链接解封的防封原理visit_type
Aug 15 PHP
PhpStorm连接服务器并实现自动上传功能
Dec 09 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中的错误处理、异常处理机制分析
2012/05/07 PHP
php内存缓存实现方法
2015/01/24 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
PHP文件与目录操作示例
2016/12/24 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
前端开发的开始---基于面向对象的Ajax类
2010/09/17 Javascript
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
国外大牛IE版本检测!现在IE都到9了,IE检测代码
2012/01/04 Javascript
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
2013/04/23 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
2016/08/15 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
微信小程序之分享页面如何返回首页的示例
2018/03/28 Javascript
vue组件间通信六种方式(总结篇)
2019/05/15 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
浅述python中argsort()函数的实例用法
2017/03/30 Python
Pytorch入门之mnist分类实例
2018/04/14 Python
Python除法之传统除法、Floor除法及真除法实例详解
2019/05/23 Python
python 中pyqt5 树节点点击实现多窗口切换问题
2019/07/04 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
使用python 的matplotlib 画轨道实例
2020/01/19 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
Python API len函数操作过程解析
2020/03/05 Python
python 爬取百度文库并下载(免费文章限定)
2020/12/04 Python
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
《欢乐的泼水节》教学反思
2014/04/22 职场文书
大学生活动总结怎么写
2014/04/29 职场文书
融资租赁计划书
2014/04/29 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
党支部反对四风思想汇报
2014/10/10 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
致运动员加油稿
2015/07/21 职场文书