Sergey
SarcasmIO
😂😂
Kirk
Как вы относитесь к такой болезни ООП как AbstractFactoryBuilderBean?
Sergey
🐴
это билдер абстрактных фабрик или абстрактный билдер фабрики?
Sergey
билдер абстрактный фабрик + бесполезный суфикс
Sergey
в целом же названия типов объектов должны передавать что делают объекты
Sergey
тут этого нет
Kirk
с помощью этого объекта можно создать любую фабрику
🐴
Sergey
Sergey
что значит "любую"?
Sergey
так не бывает
Kirk
сперва надо заэкстендиться
Sergey
мы тут знаете ли плохо к наследованию относимся)
🐴
абстрактная фабрика это вообще нечто странное
🐴
какой у нее публичный интерфейс?
Sergey
абстрактная фабрика это на самом деле прекрасный пример компромисов
Sergey
это тот случай когда избавиться от if-в не выходит)
🐴
public НепонятноЧто createObject() ?
Sergey
ну у тебя у всех "непонятно что" есть общий базовый тип
Sergey
а за счет принципа подстановки Барбары Лискоу тебе этого должно хватать
🐴
CreatableByAbstractFactoryInterface?
Sergey
ээм... нет
Sergey
ну например
🐴
AbstractButton, да?
🐴
ButtonInterface
Sergey
ну тип того
Sergey
только давай без суффиксов/постфиксов бесполезных
Sergey
просто Button
🐴
почему тогда фабрика абстрактная
Sergey
фабрика строит инстансы нужных типов исходя из входящих данных
Sergey
поскольку результатом ее работы является некая абстракция она и называется абстрактной
🐴
то есть фабрика вполне конкретная?
🐴
у нее есть инстанс?
Sergey
конкретная фабрика которая делает абстракции
🐴
почему тогда не назвать ее просто ButtonFactory?
Sergey
> у нее есть инстанс?
хз, я обычно это делаю в статическом методе в базовом классе
Sergey
Sergey
у меня к тебе встречный вопрос
Sergey
почему ты не назовешь ProductRepository не как Catalog
Sergey
?
Sergey
"прудукты хранятся в каталоге" звучит как-то логичнее с точки зрения бизнеса нежели "продукты лежат в репозитории продуктов"
🐴
а почему я не назову? может и назову. просто Repository имеет некую дополнительную смысловую нагрузку
🐴
ассоциации в голове всплывают
Sergey
точно так же Abstract имеет некую смысловую нагрузку)
Sergey
которая несет ровно ту же 0-вую ценность
🐴
ну не
Sergey
ну да)
🐴
Catalog может быть каталогом кнопок, а может быть каталогом лягушек
Sergey
ты сразу будешь думать "о репозиторий... доктрина... дата мэппер... запихну туда findProductsWithComments
🐴
а ProductRepository понятно что хранит продукты
Sergey
хотя может и может но тогда "кнопка" это продукт в каталоге)
🐴
ну да
Kirk
фронтендом запахло
Sergey
я это к тому что разработчики думают не в терминах бизнеса
Sergey
как правило
Sergey
и это заставляет их обзывать вещи как им удобно
Sergey
Sergey
Sergey
я про подавляющее большинство
Sergey
и еще большее количество людей обзывая что-то SomethingInterface делают это на автомате
Sergey
ну то есть их лет 10 назад так научили и они с тех пор так делают
Sergey
привычка
Sergey
знаете же эксперемент с обезъянками и бананом?
Sergei
Sergey
https://dezinfo.net/images3/image/02.2012/obezyan/1003.jpg
Sergey
Я стараюсь определить оптимальный уровень абстракции для требований бизнеса и на основании этого проектирую уже. Конечно до ddd лично мне далековато, но пока не жалуюсь
Sergey
Sergey
И чтобы не получилось 800 уровней наследования
Sergey
Фаьрик тыщщи, паттерн на паттерне и все такое
fink3L
fink3L
мой подход не приносит пользы
fink3L
я делаю один огромный метод, а потом думаю как из этого ооп сделать. У всех же так было?)
Sergey
почитай про функциональную абстракцию