1.6. Fábrica Simples¶
1.6.1. Objetivo¶
SimpleFactory (Fábrica Simples) é uma implementação mais simples do padrão fábrica
Diferencia-se do padrão de Fábrica Estática porque não é estático. Assim sendo, você precisa ter múltiplas fábricas, diferentemente parametrizadas, você pode ter subclasses disto e pode simular isto. Este padrão deve ser sempre preferido sobre o padrão de Fábrica Estática!
1.6.2. Diagrama UML¶

1.6.3. Código¶
Você também pode encontrar esse código no GitHub
SimpleFactory.php
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php
declare(strict_types=1);
namespace DesignPatterns\Creational\SimpleFactory;
class SimpleFactory
{
public function createBicycle(): Bicycle
{
return new Bicycle();
}
}
|
Bicycle.php
1 2 3 4 5 6 7 8 9 10 11 12 | <?php
declare(strict_types=1);
namespace DesignPatterns\Creational\SimpleFactory;
class Bicycle
{
public function driveTo(string $destination)
{
}
}
|
1.6.4. Uso¶
1 2 3 | $factory = new SimpleFactory();
$bicycle = $factory->createBicycle();
$bicycle->driveTo('Paris');
|
1.6.5. Teste¶
Tests/SimpleFactoryTest.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php
declare(strict_types=1);
namespace DesignPatterns\Creational\SimpleFactory\Tests;
use DesignPatterns\Creational\SimpleFactory\Bicycle;
use DesignPatterns\Creational\SimpleFactory\SimpleFactory;
use PHPUnit\Framework\TestCase;
class SimpleFactoryTest extends TestCase
{
public function testCanCreateBicycle()
{
$bicycle = (new SimpleFactory())->createBicycle();
$this->assertInstanceOf(Bicycle::class, $bicycle);
}
}
|