建造者模式

建造者设计模式的目的是消除其他对象的复杂创建过程。使用建造者设计模式不仅是最佳的做法,而且在摸个对象的构造和配置方法改变时候,可以尽可能的减少重复更改代码。

<?php
/**
*productBuilder.php
*/
class product
{
protected $_type = '';
protected $_size = '';
protected $_color = ''; public function setType($type){
$this->_type = $type;
} public function setSize($size){
$this->_size = $size;
} public function setColor($color){
$this->_color = $color;
}
} /**
* 创建完整产品的需要将每个配置分别传递给产品类的方法
*/
$productConfigs = array('type'=>'shirt', 'size'=>'XL', 'color'='red'); $product = new product();
$product->setType($productConfigs['type']);
$product->setSize($productConfigs['size']);
$product->setColor($productConfigs['color']);
/**
* 当product类发生改变时候,比如增加或者减少配置项,需要在所有实例化的地方更改代码。
*/ /**
* productBuilder 不仅存储配置参数,而且存储一个实例化的新product实例。
*/
class productBuilder
{
protected $_product = NULL;
protected $_configs = array(); public function __construct($configs){
$this->_product = new product();
$this->_xml = $configs;
} public function build(){
$this->_product->setSize($configs['size']);
$this->_product->setType($configs['type']);
$this->_product->setColor($configs['color']);
} public function getProduct(){
return $this->_product;
}
} $builder = new productBuilder($productConfigs);
$builder->build();
$product = $builder->getProduct();

php设计模式之建造者模式的更多相关文章

  1. Java设计模式之建造者模式(Builder)

    前言: 最近一直在学习okHttp,也对其做了一些整理,okHttp和Retrofit结合大大加速我们的开发效率,源码里面采用了很多设计模式,今天我们来学习一下其中的设计模式之一建造者模式. 建造者模 ...

  2. C#设计模式(5)——建造者模式(Builder Pattern)

    一.引言 在软件系统中,有时需要创建一个复杂对象,并且这个复杂对象由其各部分子对象通过一定的步骤组合而成.例如一个采购系统中,如果需要采购员去采购一批电脑时,在这个实际需求中,电脑就是一个复杂的对象, ...

  3. 【GOF23设计模式】建造者模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]建造者模式详解类图关系 建造飞船 package com.test.Builder; public class AirShi ...

  4. C++设计模式之建造者模式(三)

    4.引入钩子方法的建造者模式 建造者模式除了逐步构建一个复杂产品对象外.还能够通过Director类来更加精细地控制产品的创建过程.比如添加一类称之为钩子方法(HookMethod)的特殊方法来控制是 ...

  5. 乐在其中设计模式(C#) - 建造者模式(Builder Pattern)

    原文:乐在其中设计模式(C#) - 建造者模式(Builder Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 建造者模式(Builder Pattern) 作者:webabc ...

  6. 折腾Java设计模式之建造者模式

    博文原址:折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, a ...

  7. C#设计模式之四建造者模式(Builder Pattern)【创建型】

    一.引言 今天我们要讲讲Builder模式,也就是建造者模式,当然也有叫生成器模式的,英文名称是Builder Pattern.在现实生活中,我们经常会遇到一些构成比较复杂的物品,比如:电脑,它就是一 ...

  8. Java 设计模式之建造者模式(四)

    原文地址:Java 设计模式之建造者模式(四) 博客地址:http://www.extlight.com 一.前言 今天继续介绍 Java 设计模式中的创建型模式--建造者模式.上篇设计模式的主题为 ...

  9. GOF23设计模式之建造者模式

    GOF23设计模式之建造者模式 场景: 我们要建造一个复杂的产品.比如:神州飞船,Iphone.这个复杂的产品的创建.有这样的一个问题需要处理: 装配这些子组件是不是有个步骤问题? 实际开发中,我们所 ...

  10. java设计模式3——建造者模式

    java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...

随机推荐

  1. linux下如何修改进程优先级?

    linux下的进程调度优先级是从-20到19,一共40个级别,数字越大,表示进程的优先级越低.默认时候,进程的优先级是0.查看进程优先级有两个办法:ps和top. 改变进程的优先级的方法有两种: 1, ...

  2. node.js开发hello world

    在你的 D 盘下面创建一个 server.js,写入以下内容 ---------------------------------------------------- var http = requi ...

  3. 【bzoj1856】[Scoi2010]字符串 Catalan数

    题目描述 lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数.现在lxhgww想要知道满足 ...

  4. SPOJ - BALNUM Balanced Numbers

    题意: 求出所给范围内满足其数位上的奇数出现偶数次,数位上的偶数出现奇数次(或不出现)的数的个数. 思路: 对于0 ~ 9 每个数有3种情况. 1.没出现过 2.出现奇数次 3.出现偶数次 那么就可以 ...

  5. 基于WEB的机器人远程控制

    1.前进后退左转右转控制: 2.视频传输,为了保证视频的流畅性,选择相机支持格式中图像最小,帧率最低的:并对视频进行处理,将15帧处理成5帧,从而降低传输数据量: 3.地图显示及导航控制: 地图在三维 ...

  6. How to Use Instruments in Xcode

    http://blog.csdn.net/woaifen3344/article/details/40748075 This is a blog post by iOS Tutorial Team m ...

  7. VS2013的Release模式 和 debug 模式

    在有的情况下,我们可能不能直接利用Debug模式进行程序调试,那么如何在Release模式下进行程序调试呢? 一.将项目属性设置为Release,生成--->配置管理器: 二.按Alt+F7,弹 ...

  8. vue学习之环境配置

    最近在学习vue,就顺手记录一下... 1. 安装 nodejs https://nodejs.org   -->注:安装LTS的(LTS为长期稳定版本) 在cmd中输入 node -v 如果显 ...

  9. python的优化机制与垃圾回收与gc模块

    python属于动态语言,我们可以随意的创建和销毁变量,如果频繁的创建和销毁则会浪费cpu,那么python内部是如何优化的呢? python和其他很多高级语言一样,都自带垃圾回收机制,不用我们去维护 ...

  10. ZOJ2112 Dynamic Rankings(整体二分)

    今天学习了一个奇技淫巧--整体二分.关于整体二分的一些理论性的东西,可以参见XRH的<浅谈数据结构题的几个非经典解法>.然后下面是一些个人的心得体会吧,写下来希望加深一下自己的理解,或者如 ...