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

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

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

14 ответов

25 просмотров

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
Тихо, тихо, это замудрено уже, меня больше интерес...

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта