其与抽象模式相类似,都可以创建复杂的对象,但是抽象工厂更注重多个系列的产品对象,而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();