Чистая архитектура в Android
В период роста технологий очень важно правильно выбрать архитектуру, если вы хотите создать фантастическую программу, вот почему это так важно. Если вы заинтересованы в создании приложений для Android с помощью чистой архитектуры, то вы попали в нужное место. Здесь мы не просто предоставляем вам руководство по MVVM (Model View-View model), но мы будем использовать MVVM для его подключения через чистую архитектуру. В этой статье мы рассмотрим, как использовать этот дизайн для создания несвязанного, протестированного и поддерживаемого кода. Прежде чем мы перейдем к нашему основному обсуждению, давайте сначала разберемся с MVVM.
МВВМ
Model-View-ViewModel (MVVM) — это структура разработки программного обеспечения, которая отделяет программную логику от элементов управления пользовательского интерфейса. Он был представлен двумя известными архитекторами Microsoft Кеном Купером и Джоном Госсманом в 2005 году. Кроме того, MVVM также известен как model-view-binder . Как и многие другие шаблоны проектирования, MVVM помогает в организации кода и разделении программ на модули, что упрощает и ускоряет разработку, обновление и повторное использование кода. Дизайн часто используется в Windows и программном обеспечении для презентаций веб-графики. Windows Presentation Foundation (WPF) работает на платформе Microsoft .NET и использует дизайн MVVM. MVVM также используется Silverlight, мультимедийным подключаемым модулем Microsoft WPF, сопоставимым с Интернетом.
Чистая архитектура в Android
Чистая архитектура — это метод разработки программного обеспечения, при котором вы должны быть в состоянии определить, что делает программа, просто взглянув на ее исходный код. Язык программирования, аппаратные и программные библиотеки, необходимые для достижения цели программы, должны стать устаревшими. Как и другие философии разработки программного обеспечения, чистая архитектура направлена на обеспечение экономически эффективного процесса разработки качественного кода, который работает лучше, его легче изменять и который имеет меньше зависимостей. Роберт С. Мартин создал чистую архитектуру и продвигал ее в своем блоге Uncle Bob в 2011 году.
Ну, вы, должно быть, задаетесь вопросом, почему архитектура необходима? Копаем внутрь. Целью всех архитектур является управление сложностью вашего приложения. В небольшом проекте вам, возможно, не нужно об этом беспокоиться, но это может спасти жизнь в более крупных проектах. Думаю, вы уже видели эту картинку.
Вышеупомянутые кольца представляют различные уровни программного обеспечения в вашем приложении. Прежде чем мы двинемся дальше, необходимо помнить о двух важных моментах:
- Самый абстрактный круг находится в центре, а самое конкретное кольцо — снаружи. Принцип абстракции — вот как это называется. В соответствии с принципом абстракции внутренние круги должны включать бизнес-логику, тогда как внешние круги должны содержать детали реализации;
- Правило зависимости — еще один принцип чистой архитектуры. Это правило гласит, что каждый круг может полагаться только на ближайший к нему внутренний круг, что позволяет архитектуре функционировать.
Возможно, сейчас самое время понять, почему MVVM с чистой архитектурой?
MVVM с чистой архитектурой
Ваше представление, то есть (активность и фрагменты), отделено от вашей бизнес-логики с помощью MVVM. Для небольших проектов достаточно MVVM, но по мере роста вашей кодовой базы ваши ViewModels начинают раздуваться. Разделить обязанности становится сложно. В таких случаях MVVM с чистой архитектурой является подходящим выбором. Это делает шаг вперед в разделении обязанностей вашей кодовой базы. Логика действий, которые могут быть выполнены в вашем приложении, абстрагирована. Теперь чистую архитектуру также можно комбинировать с архитектурой Model-View-Presenter (MVP). Итак, мы выбираем MVVM, а не MVP, потому что в Android Architecture Components уже есть встроенный класс ViewModel — фреймворк MVVM не нужен!
Прежде чем мы двинемся дальше, вы должны четко понимать, что использование чистой архитектуры может иметь свои преимущества и недостатки . Давайте проверим это один за другим.
Преимущество чистой архитектуры
- Код легче тестировать, чем со стандартным MVVM;
- Идеально выверенное разделение (самое значительное преимущество);
- Удобная структура пакета;
- Легко поддерживать проект в рабочем состоянии;
- Ваша команда сможет внедрять новые функции еще быстрее.
Недостатки чистой архитектуры
- Кривая обучения немного крутая. Может потребоваться некоторое время, чтобы узнать, как взаимодействуют все уровни, особенно если вы используете такие архитектуры, как простые MVVM или MVP;
- Он содержит много дополнительных классов, поэтому не подходит для приложений с низким уровнем сложности.
Теперь давайте проверим слои, участвующие в этом процессе.
Сочетание MVVM с чистой архитектурой
Ниже мы показываем вам графическое представление MVVM с чистой архитектурой.
Hужно запомнить:
- Только внешние уровни могут полагаться на внутренние уровни для связи;
- Количество слоев полностью зависит от вас: сделайте так, чтобы оно соответствовало вашим требованиям;
- В узких кругах все становится более абстрактным.
Слои MVVM
Существуют разные точки зрения на количество уровней, которые должна иметь чистая архитектура. Дизайн не определяет отдельные слои, а вместо этого закладывает основу. Концепция заключается в том, что вы настраиваете количество слоев в соответствии с вашими потребностями. Здесь, для краткости, мы будем использовать пять, взгляните на них.
- Представление: это уровень, который взаимодействует с пользовательским интерфейсом (UI);
- Домен: здесь хранится бизнес-логика приложения;
- Варианты использования: интеракторы — это другое их название;
- Данные: все источники данных определяются в широком смысле;
- Framework: реализует интерфейс с Android SDK, а также конкретные реализации уровня данных.
Когда использовать чистую архитектуру?
Крайне важно помнить, что чистая архитектура не является лекарством, но может быть применена к любой платформе. На основе проекта следует определить, соответствует ли он вашим требованиям. Например, если ваш проект большой и сложный, с большим количеством бизнес-логики, чистая архитектура имеет много преимуществ. Однако для более мелких и простых задач преимущества могут быть того не стоит — в конечном итоге вам придется писать больше кода и увеличивать сложность со всеми слоями, а также тратить больше времени.
Источник