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下实现折线图效果的代码
Apr 28 PHP
延长phpmyadmin登录时间的方法
Feb 06 PHP
PHP代码审核的详细介绍
Jun 13 PHP
php函数间的参数传递(值传递/引用传递)
Sep 23 PHP
php汉字转拼音的示例
Feb 27 PHP
个人写的PHP验证码生成类分享
Aug 21 PHP
PHP实现多文件上传的方法
Jul 08 PHP
PHP实现长文章分页实例代码(附源码)
Feb 03 PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 PHP
PHP 信号管理知识整理汇总
Feb 19 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
Jul 04 PHP
Laravel中Kafka的使用详解
Mar 24 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
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
PHP 日志缩略名的创建函数代码
2010/05/26 PHP
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
2011/07/03 PHP
php不用正则验证真假身份证
2013/11/06 PHP
PHP查看当前变量类型的方法
2015/07/31 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
js函数调用常用方法详解
2012/12/03 Javascript
JavaScript中的eval()函数使用介绍
2014/12/31 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
jquery实现限制textarea输入字数的方法
2017/09/06 jQuery
Vue Socket.io源码解读
2018/02/07 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
[02:34]肉山说——泡妞篇
2014/09/16 DOTA
Python快速排序算法实例分析
2017/11/29 Python
梅尔频率倒谱系数(mfcc)及Python实现
2019/06/18 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
什么是Python变量作用域
2020/06/03 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
2020/10/29 Python
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
英国领先的隐形眼镜在线供应商:Lenstore.co.uk
2019/11/24 全球购物
工作失职检讨书范文
2014/01/16 职场文书
个人师德师风自我剖析材料
2014/09/29 职场文书
2014年自愿离婚协议书
2014/10/10 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
放假通知
2015/04/14 职场文书
pygame面向对象的飞行小鸟实现(Flappy bird)
2021/04/01 Python
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python