Я полностью отказался от старой модели данных в проекте
Теперь всё работает гибко, и по-настоящему ООП.
Что было раньше: Я использовал промежуточные data-классы вроде Paragraph, Section и т.п. Они отражали структуру API, но создавали лишний слой, усложняли навигацию по данным, и в конечном счёте — мешали расширению проекта. Каждое изменение API влекло каскадные правки по всем слоям.
Что стало: Теперь каждая сущность — это интерфейс с вложенной реализацией (Base) и внутренним маппером. Я могу маппить их в любые domain/view-модели, не завися от конкретных реализаций. Всё строится на композиции и инкапсуляции. Благодаря этому: • Код стал проще сопровождать. • Больше контроля над преобразованием данных. • Ушел от копирования данных, теперь есть OOP-шные-методы для работы с полями класса.
Почему это важно: Я разрабатываю исламское Android-приложение, которое будет работать с Кораном, переводами, аудио, — множество API и десятки моделей. Такой подход — залог масштабируемости, стабильности и читаемости.
На 1 фото - как было до На 2 фото - как стало после
P.S. Переход дался нелегко, но результат стоил того.