Здравствуйте, zelenprog, Вы писали:
Z>Здравствуйте!
Z>Стараюсь написать программу с "хорошей" архитектурой.
Z>Читал про Чистую архитектуру:
Z>https://habr.com/ru/articles/499078/
Z>Как я понял, в соответствии с Чистой архитектурой, выходные данные ResponseModel бизнес-операции (UseCase Interactor) после ее завершения "возвращаются" в вызывающий слой через интерфейс OutputPort.
Z>Интерфейс OutputPort реализуется в вызывающем слое как объект Presenter.
Z>Но ведь OutputPort "возвращается" только при завершении бизнес-операции, через OutputPort возвращаются результаты выполнения.
Z>А как сделать, чтобы происходило изменение пользовательского интерфейса именно в процессе выполнения длительной бизнес-операции?
Z>Например.
Z>Бизнес-операция — это обработка вложенных файлов и папок. Обработка каждой папки достаточно длительная.
Z>Нужно, чтобы при выполнении этой операции в окне отображалась таблица с колонками.
Z>При начале обработки новой папки\подпапки в таблице должна появляться новая строка и в первой колонке "Имя папки" таблицы отображается имя папки.
Z>По ходу обработки папки (при обработке очередного файла в этой папки) во второй колоке "Файл" должна появиться строка "обрабатывается файл ххххх". После обработки всех файлов в колонке таблицы "Результат" должен появиться результат обработки папки.
Z>В общем-то по смыслу ничего сложного.
Z>Но как это реализовать, придерживаясь принципов Clean Architecture?
Z>Как вызывающий слой должен вызвать UseCaseInteractor?
Z>Что должна сделать процедура бизнес-операции, чтобы "сработали" все эти OutputPort, Presenter и т.д., и чтобы в итоге пользователь видел процесс заполнения таблицы?
Z>Объясните, пожалуйста.
Z>Если можно — покажите какой-нибудь подходящий пример кода.
Почитал бы книжку:
Чистая архитектура она того стоит и кстати, там есть про то, что перебарщивать в архитектуре не стоит без явной в этом необходимости.