169 похожих чатов

Подскажите, как должен выглядеть фабричный метод паттерн? Ковыряю примеры и чото

не въезжаю, делается статик метод, в который передается параметр, на основе которого создаются объекты или как?

14 ответов

9 просмотров

https://refactoring.guru/ru/design-patterns/factory-method

Illidan Stormrage-S Автор вопроса
Moisha Ivanovich( ͡° ͜ʖ ͡°)
https://refactoring.guru/ru/design-patterns/factor...

Там сложно все паттерны описывают

Это скорее антипатерн по всем признакам, но если уж хочешь знать, то могу привести пример. Например, у тебя есть интерфейс Drink. От этого интерфейса ты создаёшь 3 класса, например Water, CocaCola, MilkShake. В другом классе у тебя есть свойство с типом Drink и ты хочешь сделать конструктор, который получает не Drink, а enum DrinkType. Но, так как, ты не можешь присвоить свойству Drink значение enum, то ты создаёшь класс Drinks с статическим методом create, принимающий DrinkType. В методе делаешь switch и у тебя все работает. Но используй это на свой страх и риск, так как тебе при каждом изменении enum / добавлении нового Drink нужно менять метод create

Ты знаешь что такое SOLID?

Illidan Stormrage-S Автор вопроса
Евгений Козлов
Ты знаешь что такое SOLID?

Через час начну разбирать..

Illidan Stormrage S
Через час начну разбирать..

Я в конце написал, почему это антипатерн. Тебе при добавление классов нужно добавлять код в этот метод. А прицнип OCP(буква O в слове SOLID) говорит, что это плохо. Тебе на 100 классов нужно сделать 100 инструкций case в switch. В общем, это дичь

Illidan Stormrage-S Автор вопроса
Illidan Stormrage S
Но это же лучше, чем 100 фабрик делать?

Тебе в принципе не нужно делать фабрики

Illidan Stormrage-S Автор вопроса
Евгений Козлов
Это скорее антипатерн по всем признакам, но если у...

Я сделал вроде такое, но в инете реализации более громоздкие и мне не особо понятные

Замени на мапу, где ключом будет твоя стринга, а значением лямбда supplier

Illidan Stormrage-S Автор вопроса
Viktor Gukov
Замени на мапу, где ключом будет твоя стринга, а з...

Тихо, тихо, это замудрено уже, меня больше интересует ЭТО ли фабричный метод или нет.

Illidan Stormrage S
Тихо, тихо, это замудрено уже, меня больше интерес...

Я тебе говорил про более типизированный. Он был без ошибок, но, по сути, да

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

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Вопрос по WIN32: Насколько я понимаю то все функции win32 привязаны к объектам операционной системы. Например консоль, файл, кисть, окна итд. Следовательно функции win32 упра...
Tommy Vercetti
6
кто-то пользуется компонентами rx ? как их лучше ставить, через OPM? (lazarus)
Iluha Companets
15
В смысле более затратная? Общая стоимость владения лошадью меньше, чем автомобиля. В среднем.
Sergej R
10
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
12
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Вопрос. Запускаю сонсольное приложение. Читаю из пайпа его вывод. Если данных нет, то на чтении поток зависает. Отправляю в вывод чучуть текста - нифига. Отправляю ещё чучуть...
Serjone
11
Карта сайта