php-建造者模式(Builder)解析

其与抽象模式相类似,都可以创建复杂的对象,但是抽象工厂更注重多个系列的产品对象,而Builder模式则着重于一步一步的构建一个复杂的对象,在最后一步才返回产品,

使用建造者模式的好处是:

1.将构造代码和表示代码相分离;

2.可以改变产品内部的表达方式

<?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();

  

原文地址:https://www.cnblogs.com/EvanHe/p/5473525.html