<?php
// 建造者模式
class Product
{
private $size;
private $color;
private $type;
public function setSize($size) {
$this->size = $size;
}
public function setColor($color) {
$this->color = $color;
}
public function setType($type) {
$this->type = $type;
}
public function __toString() {
ob_start();
echo 'Size: ', $this->size , '<br/>';
echo 'Color: ', $this->color , '<br/>';
echo 'Type: ', $this->type , '<br/>';
return ob_get_clean();
}
}
// 分别调用每个方法并不是最佳的做法
$product = new Product();
$product->setSize(100);
$product->setColor('red');
$product->setType('shirt');
// echo $product;
// -----------------------------------------------------------
/**
* 建造者模式
* 将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示
*/
class ProductBuilder
{
private $product;
private $configs;
public function __construct($cfgs) {
$this->configs = $cfgs;
$this->product = new Product();
}
/**
* 构建对象
*/
public function buildProduct() {
$this->product->setSize($this->configs['size']);
$this->product->setColor($this->configs['color']);
$this->product->setType($this->configs['type']);
}
public function getProduct() {
return $this->product;
}
}
$cfgs = array('size'=>100,'color'=>'blue','type'=>'shirt');
$builder = new ProductBuilder($cfgs);
$builder->buildProduct();
echo $builder->getProduct();
建造者模式
最新推荐文章于 2024-08-27 17:19:33 发布