не въезжаю, делается статик метод, в который передается параметр, на основе которого создаются объекты или как?
https://refactoring.guru/ru/design-patterns/factory-method
Там сложно все паттерны описывают
Это скорее антипатерн по всем признакам, но если уж хочешь знать, то могу привести пример. Например, у тебя есть интерфейс Drink. От этого интерфейса ты создаёшь 3 класса, например Water, CocaCola, MilkShake. В другом классе у тебя есть свойство с типом Drink и ты хочешь сделать конструктор, который получает не Drink, а enum DrinkType. Но, так как, ты не можешь присвоить свойству Drink значение enum, то ты создаёшь класс Drinks с статическим методом create, принимающий DrinkType. В методе делаешь switch и у тебя все работает. Но используй это на свой страх и риск, так как тебе при каждом изменении enum / добавлении нового Drink нужно менять метод create
Ты знаешь что такое SOLID?
Через час начну разбирать..
Я в конце написал, почему это антипатерн. Тебе при добавление классов нужно добавлять код в этот метод. А прицнип OCP(буква O в слове SOLID) говорит, что это плохо. Тебе на 100 классов нужно сделать 100 инструкций case в switch. В общем, это дичь
Но это же лучше, чем 100 фабрик делать?
Тебе в принципе не нужно делать фабрики
Я сделал вроде такое, но в инете реализации более громоздкие и мне не особо понятные
Ты сделал тот пример, о котором я написал?
Замени на мапу, где ключом будет твоя стринга, а значением лямбда supplier
Тихо, тихо, это замудрено уже, меня больше интересует ЭТО ли фабричный метод или нет.
Я тебе говорил про более типизированный. Он был без ошибок, но, по сути, да
Обсуждают сегодня