Twitt
@Twitt

Является ли данный код фабричным методом, или же статической фабрикой?

Есть класс, который имеет в себе статический метод, которому на вход подается аргумент (в данном примере transportId), есть условный оператор, который возвращает исходя из айдишника нужный транспорт. Важно учесть, что возвращаемый объект при любом случае является наследником одного абстрактного класса (в данном случае AbstractTransport).
class TransportFactory
{
    public static function createTransport($transportId)
    {
        switch ($transportId) {
            case Transport::CARS:
                return new Car();
                break;
            case Transport::PLANE:
                return new Plane();
                break;
            case Transport::TRAIN:
                return new Train();
                break;
           default:
            throw new Exception("No active transport");
        }
    }
}

Почитав про паттерны, я не совсем понимаю, это фабричный метод, или же статической симпл фэктори? И кто сможет объяснить?)
  • Вопрос задан
  • 211 просмотров
Пригласить эксперта
Ответы на вопрос 2
@vanillathunder
Это статическая фабрика.

Фабричный метод задаёт метод, который следует использовать вместо вызова оператора new для создания объектов-продуктов. Подклассы могут переопределить этот метод, чтобы изменять тип создаваемых продуктов.

https://refactoring.guru/ru/design-patterns/factor...
Ответ написан
Комментировать
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы