Я разрабатываю приложение для доставки и пытаюсь использовать чистую архитектуру. Я пытаюсь выяснить, где хранить состояние объекта Shipment, чтобы мне не приходилось повторно создавать экземпляр нового объекта каждый раз, когда пользователь нажимает кнопку в пользовательском интерфейсе. Вот поток.
- Пользователь вводит номер доставки в пользовательском интерфейсе
- Контроллер пользовательского интерфейса обрабатывает событие пользовательского интерфейса и создает экземпляр варианта использования Interactor a. Экземпляр репозитория передается в конструктор варианта использования Interactor.
- Интерактор Use Case создает экземпляр Shipment, вызывая Factory (например, CREATE_BY_DELIVERY). Фабрика вызывает репозиторий для сбора данных из базы данных.
- Данные о доставке заполняются в пользовательском интерфейсе.
- Затем пользователь нажимает кнопку «Расценка».
- UI Controller обрабатывает событие нажатия кнопки и вызывает метод RATE_QUOTE Interactor варианта использования a. Должен ли интерактор варианта использования снова вызывать фабрику отгрузки, как на шаге №3, или может ли интерактор варианта использования получить экземпляр объекта «Отгрузка», который уже был создан на шаге №3?
- Тарифы отображаются в пользовательском интерфейсе
- Затем пользователь нажимает кнопку ОБРАБОТКА отправки.
- Контроллер пользовательского интерфейса обрабатывает событие нажатия кнопки и вызывает метод PROCESS_SHIPMENT Interactor варианта использования a. Должен ли интерактор варианта использования снова вызывать фабрику отгрузки, как на шаге №3, или может ли интерактор варианта использования получить экземпляр объекта «Отгрузка», который уже был создан на шаге №3?
Должно ли состояние объекта отгрузки быть переменной экземпляра в контроллере пользовательского интерфейса, в интеракторе вариантов использования или в репозитории? В идеале я хотел бы сохранить его где-нибудь, чтобы мне не нужно было создавать новый объект каждый раз, когда пользователь нажимает кнопку в пользовательском интерфейсе.
Заранее спасибо!