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

Есть вопрос по ооп, по солиду есть правило single responsibility,

такой кейс: есть набор объектов, у объекта есть метод validate, который проверяет себя на какие-то правила, при соблюдении определенных условий при проверке правил нужно проверить дополнительно и другой объект, но это противоречит правилу single responsibility и. как в таком случае передать управление на другой объект ?

6 ответов

9 просмотров

Что чему противоречит? Опиши нормально ситуацию, пожалуйста. Пока что выглядит как кривая архитектура, где validate зачем-то прикручен к объекту, а не вынесен в отдельную сущность

Maxim-Akhmerov Автор вопроса
Илья Власов
Что чему противоречит? Опиши нормально ситуацию, п...

Есть объекты класса 'Task', в данном классе есть метод validate, который проверяет текущую таску на ряд правил и возвращает массив ошибок, у меня есть кейс, когда при проверке этих правил (то есть в самом методе) при соблюдении определенных условий необходимо создать еще один объект класса Task и тоже вызвать у него validate, и вот тут как то не оч выглядит, что объекты класса Task у себя в методах могут создавать еще другие таски, как в таком случае передается управление?

Maxim Akhmerov
Есть объекты класса 'Task', в данном классе есть м...

Например, у таски есть условно поле expires_at и successful. И метод валидейт проверяет эти два поля в самой таске. А вся остальная обработка результата этой валидации должна быть вынесена в отдельную сущность

Maxim-Akhmerov Автор вопроса
Илья Власов
Например, у таски есть условно поле expires_at и s...

'А вся остальная обработка результата этой валидации должна быть вынесена в отдельную сущность' - почему в отдельную ?

Maxim Akhmerov
'А вся остальная обработка результата этой валидац...

Потому что у тебя таска не должна заниматься валидацией самой себя. Таска работает и ей мешать не надо работать. Максимум что она должна еще делать — говорить о том, правильно ли она отработала или нет. Когда ты нагружаешь в нее бизнес-логику какую-то, которая с самой задачей не связана, то у тебя таски начинают создавать другие таски. И это еще цветочки, потом одна таска начнет останавливать другие, поднимать и шатдаунить все приложение, а потом ты с нуля начнешь все переписывать

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
I just installed it but how do I use it?
Talula
12
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Приветствую всех, возникла проблема, до этого писал бота в простом формате где при выполнении условий приходило через send_message информация, сейчас решил добавить хендлер на...
Andrew
4
Good afternoon, I just started learning php in conjunction with mysql. I am registering a system on a local Mamp server using phpMyAdmin. It seems to be stored normally in the...
ManGo
1
Карта сайта