您的位置:首页 > 其它

一个更加简洁的 建造者模式

2015-11-25 14:36 218 查看
<?php
/**
* 建造者模式
* 将一个复杂对象的构造与它的表示分离,是同样的构建过程可以创建不同的表示;
* 目的是为了消除其他对象复杂的创建过程
*/

/**
* 产品,包含产品类型、价钱、颜色属性
*/
class Product
{
public $_type  = null;
public $_price = null;
public $_color = null;
//建造产品的类型
public function setType($type)
{
echo 'set the type of the product,';
$this->_type = $type;
}
//建造产品的价格
public function setPrice($price)
{
echo 'set the price of the product,';
$this->_price = $price;
}
//建造产品的颜色
public function setColor($color)
{
echo 'set the color of the product,';
$this->_color = $color;
}
}

/*将要建造的,目标对象的参数*/
$config = array
(
'type'  => 'shirt',
'price' => 100,
'color' => 'red',
);

/*不使用建造者模式*/
$product = new Product();
$product->setType($config['type']);
$product->setPrice($config['price']);
$product->setColor($config['color']);
//var_dump($product);

/**
* builder类--使用建造者模式
*/
class ProductBuilder
{
public $_config = null;
public $_object = null;

public function ProductBuilder($config)
{
$this->_object = new Product();//在这里借用具体生产过程的对象
$this->_config = $config;
}

public function build()
{
echo '建造类开始工作了:';
$this->_object->setType($this->_config['type']);
$this->_object->setPrice($this->_config['price']);
$this->_object->setColor($this->_config['color']);
}

public function getProduct()
{
return $this->_object;
}
}

$objBuilder = new ProductBuilder($config);//新建一个建造者
$objBuilder->build();//建造者去建造
$objProduct = $objBuilder->getProduct();//建造者返回-它建造的东西

var_dump($objProduct);

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: