Clean architecture on Android

Post on 20-Mar-2017

68 views 0 download

Transcript of Clean architecture on Android

Clean architecture on Android

Eugene Dudnik@Ciklum

AgendaОжидание от архитектурыВарианты архитектуры

Различия между вариантамиClean Architecture

Ожидание от архитектуры

Ожидание от архитектурыПравильно выбранная архитектура должна способствовать системе соответствовать следующим свойствам:

Ожидание от архитектурыПравильно выбранная архитектура должна способствовать системе соответствовать следующим свойствам:● эффективность

Ожидание от архитектурыПравильно выбранная архитектура должна способствовать системе соответствовать следующим свойствам:● эффективность● гибкость (компонентность)

Ожидание от архитектурыПравильно выбранная архитектура должна способствовать системе соответствовать следующим свойствам:● эффективность● гибкость (компонентность)● расширяемость

Ожидание от архитектурыПравильно выбранная архитектура должна способствовать системе соответствовать следующим свойствам:● эффективность● гибкость (компонентность)● расширяемость● масштабируемость процесса разработки

Ожидание от архитектурыПравильно выбранная архитектура должна способствовать системе соответствовать следующим свойствам:● эффективность● гибкость (компонентность)● расширяемость● масштабируемость процесса разработки● тестируемость

Ожидание от архитектурыПравильно выбранная архитектура должна способствовать системе соответствовать следующим свойствам:● эффективность● гибкость (компонентность)● расширяемость● масштабируемость процесса разработки● тестируемость● возможность повторного использования компонентов

Ожидание от архитектурыПравильно выбранная архитектура должна способствовать системе соответствовать следующим свойствам:● эффективность● гибкость (компонентность)● расширяемость● масштабируемость процесса разработки● тестируемость● возможность повторного использования компонентов● читаемость кода

Ожидание от архитектуры

Серебряная пуля

Ожидание от архитектуры

Серебряная пуля

БАНАН

Варианты архитектуры

Варианты архитектуры

● SWD(so will descend)

Варианты архитектуры

● SWD(so will descend)● MVC

Варианты архитектуры

● SWD(so will descend)● MVC● MVP

Варианты архитектуры

● SWD(so will descend)● MVC● MVP● Clean architecture

MVC

MVC MVP

Различия

Различия

● В MVP View не имеет доступа к Model

Различия

● В MVP View не имеет доступа к Model● В MVP Presenter привязан ТОЛЬКО к одной View

Различия

● В MVP View не имеет доступа к Model● В MVP Presenter привязан ТОЛЬКО к одной View● В MVP View должно быть реализовано максимально пассивным

компонентом

Ссылки для изучения MVP

● http://hannesdorfmann.com/mosby/getting-started/● https://code.tutsplus.com/series/how-to-adopt-model-view-present

er-on-android--cms-1012● https://github.com/googlesamples/android-architecture

Clean architecture

Clean architectureВыделяют 3 основных слоя:● внешний (implementation layer)● средний (interface adapter layer)● внутренний (business logic layer)

ВАЖНО (Dependency rule)Внутренние слои ничего не должны знать про внешние слои

Clean architecture

Implementation layerВсе что делается средствами Android SDK (framework specific code)должно относиться к этому слою. Framework specific code должен включать каждую строчку кода, которая не относится к решению задачи приложения.ПримерыUI, Intents, Storage, Networks

Clean architecture

Implementation layer● UI - Activities, Fragments, Adapters● Storage - ContentProvider, ORM● Network - Retrofit

Clean architecture

Interface layerConnector между бизнес логикой приложения(business layer) и framework specific codeПримерыPresenters, Converters

Clean architecture

Interface layerPresenters - events from UI(user click), serves as callback from inner layer’s(Interactors)Converters - convert models

Clean architecture

Business layerВся логика, относящаяся к решению проблем должны быть в этом слое. Ничего из Android SDK в нем не должно быть. Код должен запускаться без эмулятора.ПримерыInteractors, Models, Repositories, Executors

Clean architecture

Business layerInteractors - бизнес логика приложения. Выполняются в бэкграунде и возвращают эвенты во внешние слои используя callback’иModels - модели для бизнес логикиRepositories - only contains interface for database or some other outer layer implementsExecutor - this package contains code for making Interactors run in background by using working thread executor

Clean architecture

Любой layer ответственен за конвертацию моделей для layer’ов нижнего уровня перед тем как они начнут использовать их.

Но нижние layer’ы не должны иметь доступа к моделям верхнего layer.

Хотя внешние layer’ы могут использовать модели из внутренних layer’ов.

Ссылки для изучения

● https://medium.com/@dmilicic/a-detailed-guide-on-developing-android-apps-using-the-clean-architecture-pattern-d38d71e94029#.y5v4gcwb4

● https://github.com/dmilicic/Android-Clean-Boilerplate/tree/example● https://github.com/android10/Android-CleanArchitecture

Thank youEugene DudnikTwitter : Eugene_DudnikGoogle+ : +EugeneDudnik