1.6. Factoría Simple

1.6.1. Propósito

La Factoría Simple es un patrón de factoría simple.

Se diferencia de la fábrica estática porque no es estática. Por lo tanto, se pueden tener varias factorías parametrizadas de forma diferente, se pueden crear subclases y se pueden generar imitaciones (mock) de ellas. ¡Siempre se debe preferir esta a una Fábrica Estática!

1.6.2. Diagrama UML

Alt SimpleFactory UML Diagram

1.6.3. Código

Puedes encontrar el código en GitHub

SimpleFactory.php

 1<?php
 2
 3declare(strict_types=1);
 4
 5namespace DesignPatterns\Creational\SimpleFactory;
 6
 7class SimpleFactory
 8{
 9    public function createBicycle(): Bicycle
10    {
11        return new Bicycle();
12    }
13}

Bicycle.php

 1<?php
 2
 3declare(strict_types=1);
 4
 5namespace DesignPatterns\Creational\SimpleFactory;
 6
 7class Bicycle
 8{
 9    public function driveTo(string $destination)
10    {
11    }
12}

1.6.4. Usage

1 $factory = new SimpleFactory();
2 $bicycle = $factory->createBicycle();
3 $bicycle->driveTo('Paris');

1.6.5. Test

Tests/SimpleFactoryTest.php

 1<?php
 2
 3declare(strict_types=1);
 4
 5namespace DesignPatterns\Creational\SimpleFactory\Tests;
 6
 7use DesignPatterns\Creational\SimpleFactory\Bicycle;
 8use DesignPatterns\Creational\SimpleFactory\SimpleFactory;
 9use PHPUnit\Framework\TestCase;
10
11class SimpleFactoryTest extends TestCase
12{
13    public function testCanCreateBicycle()
14    {
15        $bicycle = (new SimpleFactory())->createBicycle();
16        $this->assertInstanceOf(Bicycle::class, $bicycle);
17    }
18}