php设计模式之建造者模式(builder)
发表于:2019-08-16 10:22:16浏览:54次
建造者模式主要在于创建一些复杂的对象。将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示的设计模式。
```php
_parts = array();
}
// 添加产品
public function add($part) {
return array_push($this->_parts, $part);
}
}
/**
* 建造者抽象类
*/
abstract class abstractBuilder {
// 制造Mac
public abstract function buildMac();
// 制造Win
public abstract function buildWin();
// 获取结果
public abstract function getResult();
}
/**
* 具体建造者
* 实现其具体方法
*/
class Builder extends abstractBuilder {
private $_product;
public function __construct() {
$this->_product = new Product();
}
public function buildMac() {
$this->_product->add('MAC');
}
public function buildWin() {
$this->_product->add('WIN');
}
public function getResult() {
return $this->_product;
}
}
/**
* 主管
*/
class Director {
public function __construct(Builder $builder) {
$builder->buildMac();
$builder->buildWin();
}
}
// client
// 实例化 建造者 对象
$builder = new Builder();
// 实例化 主管 对象
$director = new Director($builder);
// 获取结果
$product = $builder->getResult();
var_dump($product->_parts);
/**
输出:
object(Product)#2 (1) {
["_parts":"Product":private]=>
array(2) {
[0]=>
string(5) "MAC"
[1]=>
string(5) "WIN"
}
}
*/
?>
```
输出
```bash
vagrant@vagrant-ubuntu:~$ sudo php builder.php
array(2) {
[0]=>
string(3) "Mac"
[1]=>
string(3) "Win"
}
```

