Upload
gdg-odessa
View
67
Download
0
Embed Size (px)
Citation preview
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