Комментарии 12
Такой код переусложненный, на мой взгляд
На го значительно проще выглядит
Архитектура это набор ограничений и четко определенный подход к обработке ошибок.
а где в примере про обработку ошибок?
Статья не про архитектуру приложения. Ошибки можно обрабатывать в юзкейсах непосредственно или на уровне выше. Зависит от договоренностей на проекте.
Я просто тогда не очень понимаю ценность этой публикации. Тут буквально следущее:
Автор утверждает что он преисполнился в чтении книг и хейтит всех инакомыслящих;
Имплементации UseCase должны иметь в названии постфикс Interactor а не UseCase.
Мне кажется в масштабах интерпрайз проектов это на столько не значительная проблема что о говорить о ней както не ловко чтоли. Я надеюсь, что это просто остается вашими мыслями, и вы в погоне за следованим буков книг из 90х у не превращаете ревью пуллреквестов и собеседования в душный стресс-тест.
А как быть если Interactor должен поддерживать несколько UseCase? Или useCase реализуется только в одном интеракторе?
Интерактор это конкретная имплементация юзкейса. Их может быть столько, сколько требуется.
Не совсем понимаю, в каких случаях интерактором требуется поддерживать несколько юзкейсов.
Концептуально для меня интерактор , это сущность при помощи которой я могу работать с какими-то бизнес-процессами/сущностями не вникая в детали реализации, что-то типа "получить фоточки для юзера", "юзер лайнул фоточку" , "юзер добавил фоточку" - у вас на каждую такую штуку свой интерактор?
Чем в этом случае интерактор отличается от юзкейса?
В вашем случае, я не понимаю зачем интерактор, это просто обертка над абстрактным классом. В моем случае - интерактор имеет внутри набор всех нужных useCases для реализации всего скоупа бизнес-задач (для конкретного домена). Мой интерактор, может вызывать внутри себя цепочки useCase.
PS: я наверно сильно задушнил, просто хочется понять как у вас устроено уровнем выше. Кто оперирует интеракторами/useCase в вашем варианте?
Не обертка, а конкретная имплементация абстрактной логики юзкейса.
Интерактор в таком случае становится конкретной имплементацией абстрактного юзкейса. Это очень важно — интерактор, это не какой-то класс-контроллер, который прячет за собой юзкейсы, а именно имплементация юзкейса. Интерактор, который прячет за собой юзкейсы — абсолютно ненужная абстракция, которая только мешает разбираться в коде и этот код поддерживать.
Описываем UseCase'ы правильно