Upgrade to Pro — share decks privately, control downloads, hide ads and more …

(UA) Development of iOS mobile application using MVVM architecture and reactive programming

(UA) Development of iOS mobile application using MVVM architecture and reactive programming

Slides of graduate work of bachelor's degree in V. N. Karazin Kharkiv National University

Volodymyr Hryhoriev

September 25, 2021
Tweet

More Decks by Volodymyr Hryhoriev

Other Decks in Programming

Transcript

  1. Тема: “Розробка мобільного додатку на платформі iOS з використанням MVVM

    архітектури та реактивного програмування.” Виконав студент 4 курсу, групи МФ-42 Григор’єв Володимир
  2. Актуальність теми: • проблеми MVC від Apple: ◦ сильна зв’язності

    контролера та представлення ◦ величезна кількість відповідальностей контролера
  3. Масивний контролер представлення має багато відповідальностей: • розміщення, анімація, зовнішній

    вигляд UI елементів • реакція на взаємодію з користувачем • реакція на життєвий цикл представлення (причина сильної зв’язності) • логіка презентації (перетворення даних в зрозумілий для представлення вигляд) • стягування даних із мережі або бази даних • є делегатом сервісів (LocationManager, AudioPlayer, тощо) • переходи між екранами (контролерами)
  4. Постановка задачі 1. Визначити переваги й недоліки MVVM 2. Розробити

    власну реалізацію MVVM архітектури 3. Реалізувати зв’язування даних між View Model та View за допомогою реактивного програмування 4. Розробити UI
  5. Зв’зування даних в iOS, реактивне програмування На жаль iOS не

    надає розробникам можливість зв’язувати данні. Тому треба звернутися до реактивного програмування. Для іOS є декілька реалізацій RP: - ReactiveCocoa - RxSwift (ReactiveX) - ReactiveKit
  6. ReactiveX тому, що: • це універсальний API, реалізований багатьма мовами

    • має велику кількість операторів схожих на оператори колекцій (map, flatMap, filter, skip, тощо) • має велику спільноту програмістів, котра створює безліч корисних бібліотек-обгорток на системні iOS фреймворки і не тільки
  7. Висновки: • вирішили проблеми сильної зв’язності контролера та представлення •

    зменшили кількість відповідальностей контролера • відділили UI від логіки • уможливили тестування логіки незалежно від UI • стали на крок ближче до створенням надійного, легко підтримуваного продукту