首页 PHP 正文
247

设计模式之建造者模式

建造者模式是将产品的组装过程包装在一起,由调度者完成各个部件的组装。通常由以下几部分组成:
1、抽象建造者接口,将产品的各部件组装抽象成一系列操作。
2、具体建造者,负责实现产品部件的组装细节,并将结果返回。
3、指挥者,它是建造者的使用者,负责将各个建造环节串起来。它主要有两个作用,一是:隔离了客户与对象的生产过程,二是:负责控制产品对象的生产过程。
4、产品角色,建造者加工的对象。
/**
*建造者抽象类
*/
abstract class Builder{
    public abstract function buildPartA();
    public abstract function buildPartB();
    public abstract function getResult();
}

/**
*具体建造者类
*/
class ConcreteBuilder extends Builder{
    private $product;
    
    public function __construct(){
        $this->product = new Product('Bird Gun');
    }
    
    public function buildPartA(){
        $this->product->add('Part A');
    }
    
    public function buildPartB(){
        $this->product->add('Part B');
    }
    
    public function getResult(){
        return $this->product;
    }
}

/**
*指挥者,与建造者是拥有关系(Director has a Builder)
*/
class Director{
    public function __construct(Builder $builder){
        $builder->buildPartA();
        $builder->buildPartB();
    }
}

/**
*产品类
*/
class Product{
    private $name;
    private $parts = array();
    
    public function __construct($name){
        $this->name = $name;
    }
    
    public function add($part){
        array_push($this->parts, $part);
    }
    
    public function show(){
        echo 'Product Name:'.$this->name.', With parts:'.implode(',', $this->parts).'<br>';
    }  
}

$builder = new ConcreteBuilder();
new Director($builder);
$product = $builder->getResult();
$product->show();

正在加载评论...