Slide 1

Slide 1 text

MVVM-C vs MVP Aydar Mukhametzyanov Dmytro Khmelenko

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

View Controller Model Model-View-Controller

Slide 5

Slide 5 text

Layout Activity View Controller Model Model-View-Controller

Slide 6

Slide 6 text

View Controller Model Model-View-Controller

Slide 7

Slide 7 text

UIViewController Model View Controller Model-View-Controller

Slide 8

Slide 8 text

Problems with MVC Activity/UIViewController is a “God” class Business logic is mixed with UI Hard to reuse Hard to implement tests

Slide 9

Slide 9 text

Solution Model-View-Presenter Model-View-ViewModel (+Coordinator)

Slide 10

Slide 10 text

View Model (Interactor) Activity Layout Presenter MVP

Slide 11

Slide 11 text

Solution Model-View-Presenter Model-View-ViewModel (+Coordinator)

Slide 12

Slide 12 text

MVVM UIViewController Model View Controller

Slide 13

Slide 13 text

Model ViewModel View UIViewController MVVM

Slide 14

Slide 14 text

Model ViewModel View UIViewController UIView MVVM Navigation?

Slide 15

Slide 15 text

MVVM stack Model ViewModel View Coordinator MVVM-C

Slide 16

Slide 16 text

MVVM stack Coordinator MVVM stack MVVM stack MVVM-C

Slide 17

Slide 17 text

MVVM stack MVVM stack MVVM stack MVVM stack Coordinator Coordinator MVVM-C

Slide 18

Slide 18 text

View Model (Interactor) Activity Layout Presenter MVVM vs MVP Model ViewModel View UIViewController UIView

Slide 19

Slide 19 text

• Provides data to Presenter/ViewModel • Processes data (networking, persistence) Model (Interactor) Responsibilities

Slide 20

Slide 20 text

Responsibilities • Draws UI with provided data • Notifies Presenter/ViewModel about user actions View

Slide 21

Slide 21 text

• Handles user actions from View • Gets data from Model • Updates data in Model • Business logic • Provides updated/processed data to View Presenter/ViewModel Responsibilities ——————————————————— • Communicates with Coordinator

Slide 22

Slide 22 text

• Handle navigation • Build the MVVM stacks Coordinator Responsibilities

Slide 23

Slide 23 text

Same thing, different names?

Slide 24

Slide 24 text

Bindings View ViewModel Owns Observes by Reactive approach

Slide 25

Slide 25 text

Simulate bindings View ViewModel Owns Notifies To be continued… …with Reactive approach?

Slide 26

Slide 26 text

Business logic is decoupled from UI Easy to maintain Easy to test Easy to reuse components MVP/MVVM-C advantages

Slide 27

Slide 27 text

Thank you! Questions