ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

建造者模式是什么?

2022-05-17 01:32:58  阅读:157  来源: 互联网

标签:color 什么 建造 模式 产品 config public


建造模式介绍

建造模式(Builder Pattern)是对象的创建模式。它可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。

由于建造零件的过程很复杂,因此,这些零件的建造过程往往被“外部化”到另一个乘坐建造者的对象里,建造者对象返还给客户端的是一个全部零件都建造完毕的产品对象。它将产品的结构和建造过程对客户端隐藏起来。

建造模式的四种角色:

1 builder:为创建一个产品对象的各个部件指定抽象接口。

2 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口。

3 Director:构造一个使用Builder接口的对象。

4 Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。

php代码实例

<?php

/**

 * 产品,包含产品类型、价钱、颜色属性

 */

class Product

{

public $_type  = null;

public $_price = null;

public $_color = null;

  

public function setType($type){

echo '设置产品类型';

$this->_type = $type;

}

  

public function setPrice($price){

echo '设置产品价格,';

$this->_price = $price;

}

  

 public function setColor($color){

echo '设置产品颜色';

$this->_color = $color;

}

}

//不使用builder模式

$product = new Product();

$product->setType("衣服");

$product->setPrice("100");

$product->setColor("红色");

  

//使用builder模式

class ProductBuilder{

public $_config = null;

public $_object = null;

//$config 被设计为一个数组,格式

//$config = array('type' => 'xx', 'price' => 'xx', 'color' => 'xx');

public function ProductBuilder($config){

$this->_object = new Product();

$this->_config = $config;

}

  

public function build(){

echo '<br />使用建造者模式:<br />';

$this->_object->setType($this->_config['type']);

$this->_object->setPrice($this->_config['price']);

$this->_object->setColor($this->_config['color']);

}

  

public function getProduct(){

return $this->_object;

}

}

$config = array('type' => '汽车', 'price' => '2000000', 'color' => '白色');

$objBuilder = new ProductBuilder($config);

$objBuilder->build();

$objProduct = $objBuilder->getProduct();

echo '<br />';

var_dump($objProduct);

建造者模式的优点

首先,建造者模式的封装性很好。使用建造者模式可以有效的封装变化,在使用建造者模式的场景中,一般产品类和建造者类是比较稳定的,因此,将主要的业务逻辑封装在导演类中对整体而言可以取得比较好的稳定性。

其次,建造者模式很容易进行扩展。如果有新的需求,通过实现一个新的建造者类就可以完成,基本上不用修改之前已经测试通过的代码,因此也就不会对原有功能引入风险。

建造者模式与工厂模式的区别

我们可以看到,建造者模式与工厂模式是极为相似的,总体上,建造者模式仅仅只比工厂模式多了一个“导演类”的角色。在建造者模式的类图中,假如把这个导演类看做是最终调用的客户端,那么图中剩余的部分就可以看作是一个简单的工厂模式了。

与工厂模式相比,建造者模式一般用来创建更为复杂的对象,因为对象的创建过程更为复杂,因此将对象的创建过程独立出来组成一个新的类——导演类。也就是说,工厂模式是将对象的全部创建过程封装在工厂类中,由工厂类向客户端提供最终的产品;而建造者模式中,建造者类一般只提供产品类中各个组件的建造,而将具体建造过程交付给导演类。由导演类负责将各个组件按照特定的规则组建为产品,然后将组建好的产品交付给客户端。

总结

建造者模式与工厂模式类似,他们都是建造者模式,适用的场景也很相似。一般来说,如果产品的建造很复杂,那么请用工厂模式;如果产品的建造更复杂,那么请用建造者模式。

标签:color,什么,建造,模式,产品,config,public
来源: https://www.cnblogs.com/yx520zhao/p/16279315.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有