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连mysql和oracle数据库性能比较
Oct 09 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
PHP和C#可共用的可逆加密算法详解
Oct 26 PHP
PHP检测链接是否存在的代码实例分享
May 06 PHP
PHP发送AT指令实例代码
May 26 PHP
php字符串操作常见问题小结
Oct 11 PHP
PHP配置ZendOpcache插件加速
Feb 14 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
Apr 23 PHP
提高Laravel应用性能方法详解
Jun 24 PHP
php使用pecl方式安装扩展操作示例
Aug 12 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
Apr 23 PHP
php使用Swoole实现毫秒级定时任务的方法
Sep 04 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
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
JavaScript加强之自定义event事件
2013/09/21 Javascript
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
详解Angular6学习笔记之主从组件
2018/09/05 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
vue iview多张图片大图预览、缩放翻转
2019/07/13 Javascript
微信小程序自定义联系人弹窗
2020/05/26 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
js实现随机点名
2021/01/19 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
[01:20]DOTA2 2017国际邀请赛冠军之路无止竞
2017/06/19 DOTA
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
解决DataFrame排序sort的问题
2018/06/07 Python
Python+Selenium使用Page Object实现页面自动化测试
2019/07/14 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
tensorflow 报错unitialized value的解决方法
2020/02/06 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
简单了解如何封装自己的Python包
2020/07/08 Python
Python与C/C++的相互调用案例
2021/03/04 Python
美国知名艺术画网站:Art.com
2017/02/09 全球购物
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
Structs界面控制层技术
2013/10/11 面试题
恐龙的灭绝教学反思
2014/02/12 职场文书
社区春季防火方案
2014/06/02 职场文书
2014年乡镇妇联工作总结
2014/12/02 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技