Silent829
не понял ты это к чему
Другой пример давай. Есть интерфейс, который поставляет тебе первый цепочку экранов для навигации (может пригодиться, когда у тебя диплинки и пуши ведут глубоко в прилагу). Ты хочешь, чтобы в ViewModel можно было спросить эти экраны, но VM и так наследует класс. Ты снова объявляет свой ComplexNavigator интерфейсом, всю логику выносишь в жефолтный метод. Для логики тебе нужны зависимости? Пишешь getThis и getThat в интерфейсе, пусть их за тебя реализуют. Короче, паттерн шаблонный метод, только через интерфейс. Твоя VM реализует это дело, ее задача чисто зависимости подогнать. Вариант? Вариант.
А если тебе надо ещё где-то получать такую цепочку экранов? Снова реализуй тут же интерфейс и пиши методы выдачи зависимостей? А можно было BaseNavigator : ComplexNavigator просто написать и поставлять в любую VM