Basit ve kontrollü bir şekilde nesneler oluşturmak için kullanılır. Statik olmadığı için statik fabrikadan farklıdır. Farklı parametreli birden fazla fabrikanız olabilir, alt sınıflara bağlanabilir ve kullanabilirsiniz. Statik bir fabrika yerine her zaman tercih edilmelidir.
Örnek kodlarla devam edelim;
<?php // SimpleFactory.php declare(strict_types=1); namespace DesignPatterns\Creational\SimpleFactory; class SimpleFactory { public function createBicycle(): Bicycle { return new Bicycle(); } } // Bicycle.php declare(strict_types=1); namespace DesignPatterns\Creational\SimpleFactory; class Bicycle { public function driveTo(string $destination) { } }
Kullanımı şu şekilde olacaktır;
$factory = new SimpleFactory(); $bicycle = $factory->createBicycle(); $bicycle->driveTo('Paris');
Örneğe ait test;
<?php // Tests/SimpleFactoryTest.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); } }
İlk Yorumu Siz Yapın