Ну у нас в Badoo в целом такой подход к разработке. Не могу сказать, что в точности как в книжках, но многое заимствовано от этих принципов. Ну и в личных проектах я придерживаюсь этих принципов. Плюс-минус.
Интересный подход. Надо тоже попробовать отказаться от идеи слоеного пирога и перейти на такой компонентный подход. С набором одноранговых фичей-компонентов, где каждый компонент имеет свой изолированный стейт, набор событий и логику.
скорее всего имеется ввиду когда целое приложение делится именно по слоям (не по фичам). Тогда появляется папка Presenters, в которой лежит 30 presenter'ов. Работать с таким проектом - "одно удовольствие".
Осваиваю сейчас на практике buildFlavor'ы. [MVVM] Есть экран со списком и кнопкой "добавить", в расширенной версии хочу добавить LongClick. Я могу расширить View и ViewModel. Могу ли я как-то в расширенной View указать явно, что теперь у нее AdvancedViewModel ViewModel, чтобы не кастовать каждое обращение?
Это да. Но думаю что можно пойти дальше и разделить все приложение на отдельные компоненты. В том числе функции репозитория вынести в отдельные сервисные компоненты такие как работа с локальным хранилищем, работа с сервером и т.д. И взаимодействовать с ними не императивным дерганьем методов, а через отправку событий и подписку на изменение стейта компонента. Это позволит реализовать полностью реактивную архитектуру приложения.
сначала придумали методы, потом эти методы обернули в классы, потом классы обернули в модули. Потом приходят разработчики и кладут 1 метод в 1 класс в 1 модуль, а потом выходит мем, что архитектурщики сову на глобус натягивают
Не исключает конечно, дело добровольное. Я не оперирую понятием "слой", и не задумываюсь условно "в каком слое должен быть маппер из одного слоя в другой". Разделяю по ответственностям.