/**
* 负责生产各个零件
*
*/
class MixedBuilder implements Builder{
/**
* @var PartFactory
*/
private $cpuFactory,$powerFactory,$mainBoardFactory,$videoCardFactory,$ramFactory;
function __construct(){
$this->cpuFactory=new Amd();
$this->mainBoardFactory=new Asus();
$this->powerFactory=new GreatWall();
$this->ramFactory=new KingMax();
$this->videoCardFactory=new Ati();
}
function buildCpu(){
return $this->cpuFactory->build();
}
function buildPower(){
return $this->powerFactory->build();
}
function buildMainBoard(){
return $this->mainBoardFactory->build();
}
function buildVideoCard(){
return $this->videoCardFactory->build();
}
function buildRam(){
return $this->ramFactory->build();
}
}
/**
* 负责组装各个零件
*
*/
class Director {
/**
* @var Builder
*/
private $builder;
function __construct(Builder $builder){
$this->builder=$builder;
}
/**
* @return Computer
*
*/
function buildComputer(){
$computer=new Computer();
$computer->addPart($this->builder->buildPower());
$computer->addPart($this->builder->buildMainBoard());
$computer->addPart($this->builder->buildCpu());
$computer->addPart($this->builder->buildRam());
$computer->addPart($this->builder->buildVideoCard());
return $computer;
}
}
//builder目的,使部件的生产与组装解耦
//部件零售者,处理构置零件
$builder=new MixedBuilder();
//装机人,处理装配顺序
$director=new Director($builder);
$computer=$director->buildComputer();
$computer->run();
?>