1.6. Проста Фабрика (Simple Factory)
1.6.1. Призначення
SimpleFactory у прикладі нижче, це патерн «Проста Фабрика».
Вона відрізняється від Статичної Фабрики тим, що власне не є статичної. Таким чином, ви можете мати безліч фабрик з різними параметрами. Проста фабрика завжди повинна бути кращою за Статичну фабрику!
1.6.2. Діаграма UML
1.6.3. Код
Ви можете знайти цей код на 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. Тест
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}