This commit is contained in:
Dominik Liebler
2013-09-21 22:25:20 +02:00
parent 9484868299
commit f6651bafaa
9 changed files with 56 additions and 173 deletions

View File

@@ -5,35 +5,51 @@ namespace DesignPatterns\Builder;
/**
* BikeBuilder builds bike
*/
class BikeBuilder implements Builder
class BikeBuilder implements BuilderInterface
{
/**
* @var Parts\Bike
*/
protected $bike;
/**
* {@inheritdoc}
*/
public function addDoors()
{
}
/**
* {@inheritdoc}
*/
public function addEngine()
{
$this->bike->setPart('engine', new Parts\Engine());
}
/**
* {@inheritdoc}
*/
public function addWheel()
{
$this->bike->setPart('forwardWheel', new Parts\Wheel());
$this->bike->setPart('rearWheel', new Parts\Wheel());
}
/**
* {@inheritdoc}
*/
public function createVehicle()
{
$this->bike = new Parts\Bike();
}
/**
* {@inheritdoc}
*/
public function getVehicle()
{
return $this->bike;
}
}
}

View File

@@ -14,7 +14,7 @@ namespace DesignPatterns\Builder;
* Note: Builders have often a fluent interface, see the mock builder of
* PHPUnit for example.
*/
interface Builder
interface BuilderInterface
{
/**
* @return mixed

View File

@@ -5,7 +5,7 @@ namespace DesignPatterns\Builder;
/**
* CarBuilder builds car
*/
class CarBuilder implements Builder
class CarBuilder implements BuilderInterface
{
/**
* @var Parts\Car

View File

@@ -14,8 +14,12 @@ class Director
/**
* The director don't know 'bout concrete part
*
* @param BuilderInterface $builder
*
* @return Parts\Vehicle
*/
public function build(Builder $builder)
public function build(BuilderInterface $builder)
{
$builder->createVehicle();
$builder->addDoors();
@@ -24,5 +28,4 @@ class Director
return $builder->getVehicle();
}
}
}