mirror of
https://github.com/DesignPatternsPHP/DesignPatternsPHP.git
synced 2025-06-28 12:14:08 +02:00
26 lines
635 B
PHP
26 lines
635 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace DesignPatterns\Creational\StaticFactory;
|
|
|
|
use InvalidArgumentException;
|
|
|
|
/**
|
|
* Note1: Remember, static means global state which is evil because it can't be mocked for tests
|
|
* Note2: Cannot be subclassed or mock-upped or have multiple different instances.
|
|
*/
|
|
final class StaticFactory
|
|
{
|
|
public static function factory(string $type): Formatter
|
|
{
|
|
if ($type == 'number') {
|
|
return new FormatNumber();
|
|
} elseif ($type == 'string') {
|
|
return new FormatString();
|
|
}
|
|
|
|
throw new InvalidArgumentException('Unknown format given');
|
|
}
|
|
}
|