温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

建造者模式的案例分析

发布时间:2020-10-29 14:19:10 来源:亿速云 阅读:134 作者:小新 栏目:编程语言

这篇文章给大家分享的是有关建造者模式的案例分析的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

建造模式介绍

建造模式(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);

建造者模式的优点

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

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

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

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

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


感谢各位的阅读!关于建造者模式的案例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI