2016-09-13 3 views
1

Я много читал и тестировал шаблоны MVP в Android, но я здесь, чтобы спросить ваше мнение о том, что может быть лучшей практикой, если я хочу уважать как «правило зависимостей», так и MVP шаблон.Правила зависимостей Android MVP

Как это объясняется в многочисленных статьях (эта ссылка: http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/), наше приложение должно быть разделено на слои и только внешний слой может создать экземпляр и использовать внутренний слой. Внутренний слой получает все параметры (переменные, контексты, виды и т. Д.) И возвращает ответ или использует обратные вызовы и т. Д.

Также рекомендуется изолировать слои, используя более сложные интерфейсы и вызывающие интерфейсы вместо классов непосредственно. (см. Ссылку: http://www.tinmegali.com/en/model-view-presenter-mvp-in-android-part-2/). В ссылке выше автор указывает, что он не использует методы обратного вызова, а интерфейсы для перехода от внутреннего уровня к внешнему уровню (не соблюдая правило зависимости).

Мои вопросы по этому поводу являются два:

1) лучше использовать интерфейс как для класса вызывающего (наружный слой относится к интерфейсу класса под названием) и называется класс (внутренний layer относится к интерфейсу вызова класса), или это необходимо только в одном направлении, например, только внешний класс относится к интерфейсу внутреннего интерфейса?

2), потому что внешний слой (UI), создает все внутренние слои и с помощью простого поворота экрана разрушаются и воссоздано, это лучше (для утечки памяти), чтобы сохранить состояние (когда это необходимо), уничтожить внутренние классы и процессы и воссоздать их, или до istantiate статическим способом (через Singleton или в качестве экземпляров класса, который расширяет класс Application) все классы, которые нужно «выжить» на экране вращения? Спасибо всем!

+1

Эй, проверить это пример приложения MVP, он изолирует все зависимости передавая их все в одной точке (активность), https://github.com/renaro/tinder-like- приложение, в этом видео есть ex выровняли MVP: https://www.youtube.com/watch?v = iXDAcWEhYSk & t = 5s –

+0

Спасибо! Я проверю! –

ответ

1

Я считаю, что MVP - это как-то разработка Tuxedo, что означает, что вам нужно разделить все и использовать интерфейсы для объявления различных методов перед их внедрением. Поэтому мой ответ на ваш первый вопрос - ДА!

Как правило, в такой ситуации я считаю, что именно я определяю слои, а другой младший разработчик должен использовать ядро, которое я разработал, поэтому лучше ограничить его действие и уменьшить его недостатки и ошибки.

О воссоздании, я бы предложил использовать кинжал надлежащим образом, что действительно останавливает вас от воссоздания объектов, которые были созданы раньше только из-за вращения экрана! Вы можете сохранить декларации нижнего уровня в памяти и прикрепить их к новому виду после вращения.

Я хотел бы предложить, чтобы взглянуть на этот образец репо, которые я выработал с помощью MVP, Dagger, RxJava и Retrofit, чтобы получить больше знакомы с передовым опытом и новыми методами Android развития:

http://github.com/mmirhoseini/fyber_mobile_offers

Я надеюсь, что это помогает :)

+0

очень полезно! большое спасибо! –

+0

Добро пожаловать –

Смежные вопросы