Предположим что разрабатывается приложение. Выбран паттерн MVP. И необходимо придерживаться SOLID принципов.
Например, создали класс репозиторий, методы репозитория обвернуты в observable от rxJava. Используем этот репозиторий в презентере. Как в этом случае работает dependency inversion principle? Получается, необходимо для репозитория сделать интерфейс, с описанием методов которые возвращают observable? - вроде, где-то читал что вообще по правильному не должны зависит от каких то сторонних фреймворков, а где-то читал что нужно считать rx как стандартную библиотеку и не париться по этому поводу.
Насколько это правильно? Можете привести какой нибудь пример с реального проекта с rx?
Да, все верно нужно создать интерфейс репозитория. Инжектим этот интерфейс в презентер. Тогда наш презентер не будет зависеть от реализации репозитория, а будет зависеть от абстракции. Это помогает в тех случаях, когда нам нужно поменять класс репозитория на другой класс совсем с другой логикой. Например, сначала у нас был репозиторий с тестовыми данными, потом бекенд закончил делать апи и мы подменили репозиторий на реальный, так как интерфейс репозитория остался такой же, то код презентера мы не меняем.
Наверное, вы читали в статьях о clean architecture, что проект не должен зависеть от каких-то фреймфорков. Это правда и RxJava во всех слоях приложения это нарушение этого принципа. Но правда и то, что в андроиде сейчас RxJava это стандарт (как Stream API в java) поэтому она есть во всем проекте.
Примеров в интернете очень много, один из фундаментальных это вот этот. Там как раз то, что я описал выше есть. На хабре есть статья по этому репозиторию, чтобы лечге понимать, что происходит в коде.
Еще есть такая статья для большего понимания
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть некоторые представленияНужно вывести их в QTableView, а так же запрос всех представления существующих в БД, результат это
Подскажите, как разрешить следующую ситуацию - у меня есть базовый контейнер от которого наследуется 2 различных: