Skip to content
adavydenko edited this page Aug 3, 2016 · 3 revisions

Clean Achitecture — принцип разработки приложений, предложенный Uncle Bob'ом. Код, спроектированный с учётом этой архитектуры, легче тестировать и переиспользовать.

Суть Clean Architecture заключается в разделении логики приложения на несколько составляющих: бизнес-логику, логику представления, логику отображения и логику маршрутизации. Каждый экран приложения оформляется в отдельную сцену. Для каждой сцены создаётся набор классов, соответствующих данным составляющим: Interactor (содержит всю бизнес-логику), View Controller (содержит всю логику отображения и, кроме того, получает события от UI), Presenter (содержит логику представления) и Router (содержит логику маршрутизации, то есть отвечает за переход между сценами).

View Controller, Interactor и Presenter образуют VIP-цикл. Данные представляются в виде моделей — структур, инкапсулирующих различные параметры, представленные с помощью элементарных типов. Существуют три вида модели: Request, Response и View Model. Рассмотрим их подробнее.

VIP-цикл

View Conroller получает события от UI (системы) и формирует Request, в который помещает данные, которые необходимо обработать. Далее Request отправляется Interactor'у. Request также может быть пустым, если нужно просто инициировать какое-то действие со стороны Interactor'а. Interactor получает Request в качестве параметра одного из методов. В этом методе может производиться обработка данных, содержащихся в Request'е, либо делегирование части бизнес-логики другому объекту, который мы будем называть Worker. Далее, в том же методе формируется ответ на запрос — Response, который затем посылается Presenter'у. Presenter аналогично принимает его в виде параметра метода. В методе производится форматирование данных, представление их в наиболее удобном для отображения виде. Отформатированные данные пакуются в View Model, которая посылается View Controller'у. Таким образом, VIP-цикл замыкается. View Controller распаковывает эту модель и отображает её с помощью UI.

Более развёрнуто о Clean Architecture можно прочитать:

Разработка

  1. Стили кодирования
  • [Java](Код стайл для языка Java)
  • [C/C++](Стиль написания кода на С )
  • [C#](Стиль написания кода на С# )
  • [Swift](Руководство по оформлению кода на языке Swift )
  • Написание комментариев к коммитам
  1. Android
  • Android DevGuide
  • [QR codes](Работа c QR на Android)
  • [Полезные вещи](Полезные вещи для Android разработки)
  • [Архитектура приложения](Архитектура приложения)
  • [Используемые компоненты](Используемые компоненты)
  • [Инструкция по сборке проекта](Инструкция по сборке проекта)
  1. iOS
  1. C и C++
  • [Использование CMake для проектов на C++ и C ](Использование CMake для проектов на C и CPP)

Описание

  1. Форматы файлов
  • [.bmp](Cтруктура хранения bmp файлов)
  • [.jpg](Cтруктура хранения jpg файлов)
  • [.png](Cтруктура хранения png файлов)
  1. Алгоритмы шифрования
  1. Примеры использования
  • [Библиотека матричной алгебры](Пример использования библиотеки матричной алгебры)
  1. Описание процесса кодирования файла
  2. Способ обезопасить использование приложения
  3. Java фасад библиотеки алгоритмов
  4. Алгоритм шифрования bmp на java заглушке

Тест-кейсы

  1. Матричная арифметика
  • [A+B](Сложение матриц)
  • [A*p](Умножение матрицы на скаляр)
  • [A*B](Умножение матриц)
  • [Обратные матрицы](Нахождение обратной матрицы)
  1. Взятие по модулю
  • [A mod p](Взятие матрицы по модулю простого числа)
  • [A mod P](Взятие матрицы по модулю - матрицы из простых чисел)
  1. Суперпозиция (модуль - простое число)
  • [A+B mod p](Сложение матриц по модулю простого числа)
  • [A*c mod p](Умножение матрицы на скаляр по модулю простого числа)
  • [A*B mod p](Умножение матриц по модулю простого числа)
  1. Суперпозиция (модуль - матрицы из простых чисел)
  • [A+B mod P](Сложение матриц по модулю - матрице простых чисел)
  • [A*c mod P](Умножение матрицы на скаляр по модулю - матрице простых чисел)
  • [A*B mod P](Умножение матриц по модулю - матрице простых чисел)

##Прочее

  1. [Утечки памяти](Memory Leaks)
  2. [Базовые цвета](Базовые цвета)
  3. [Clean Architecture](Clean Architecture)
Clone this wiki locally