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脚本的10个技巧(5)
Oct 09 PHP
Windows中安装Apache2和PHP4权威指南
Nov 18 PHP
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
Oct 22 PHP
pdo中使用参数化查询sql
Aug 11 PHP
PHP安全性漫谈
Jun 28 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
Dec 22 PHP
php检测iis环境是否支持htaccess的方法
Feb 18 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
Mar 21 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
php实现xml转换数组的方法示例
Feb 03 PHP
php中的钩子理解及应用实例分析
Aug 30 PHP
laravel通过a标签从视图向控制器实现传值
Oct 15 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
第四节--构造函数和析构函数
2006/11/16 PHP
15种PHP Encoder的比较
2007/03/06 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
php上传文件并显示上传进度的方法
2015/03/24 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
2016/03/23 PHP
PHP多进程之pcntl_fork的实例详解
2017/10/15 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
2020/07/10 PHP
关于jQuery中的end()使用方法
2011/07/10 Javascript
加载 Javascript 最佳实践
2011/10/30 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
采用call方式实现js继承
2014/05/20 Javascript
Jquery Post处理后不进入回调的原因及解决方法
2014/07/15 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
简单实现js进度条加载效果
2020/03/25 Javascript
使用JavaScript破解web
2018/09/28 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
2019/05/12 Javascript
express中static中间件的具体使用方法
2019/10/17 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
[01:00:54]TI4正赛第二日开场
2014/07/20 DOTA
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
python入门前的第一课 python怎样入门
2018/03/06 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
Python优秀开源项目Rich源码解析的流程分析
2020/07/06 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
vue路由实现登录拦截
2021/03/24 Vue.js
外贸主管求职简历的自我评价
2013/10/23 职场文书
开办加工厂创业计划书
2014/01/03 职场文书
大学生党员自我批评
2014/02/14 职场文书
银行主办会计岗位职责
2014/08/13 职场文书
诚信高考倡议书
2019/06/24 职场文书