Presentation for the lightning talk on spikeweek at Freeletics
MVVM-C vs MVPAydar MukhametzyanovDmytro Khmelenko
View Slide
ViewControllerModelModel-View-Controller
LayoutActivityViewControllerModelModel-View-Controller
UIViewControllerModelViewControllerModel-View-Controller
Problems with MVC Activity/UIViewController is a “God” class Business logic is mixed with UI Hard to reuse Hard to implement tests
SolutionModel-View-PresenterModel-View-ViewModel (+Coordinator)
ViewModel(Interactor)ActivityLayoutPresenterMVP
MVVMUIViewControllerModelViewController
Model ViewModelViewUIViewControllerMVVM
Model ViewModelViewUIViewControllerUIViewMVVMNavigation?
MVVM stackModelViewModelViewCoordinatorMVVM-C
MVVM stackCoordinatorMVVM stack MVVM stackMVVM-C
MVVM stack MVVM stackMVVM stack MVVM stackCoordinatorCoordinatorMVVM-C
ViewModel(Interactor)ActivityLayoutPresenterMVVM vs MVPModel ViewModelViewUIViewControllerUIView
• Provides data to Presenter/ViewModel• Processes data (networking, persistence)Model (Interactor)Responsibilities
Responsibilities• Draws UI with provided data• Notifies Presenter/ViewModel about user actionsView
• Handles user actions from View• Gets data from Model• Updates data in Model• Business logic• Provides updated/processed data to ViewPresenter/ViewModelResponsibilities———————————————————• Communicates with Coordinator
• Handle navigation• Build the MVVM stacksCoordinatorResponsibilities
Same thing, different names?
BindingsViewViewModelOwnsObservesby Reactive approach
Simulate bindingsViewViewModelOwnsNotifiesTo be continued……with Reactive approach?
Business logic is decoupled from UI Easy to maintain Easy to test Easy to reuse componentsMVP/MVVM-C advantages
Thank you!Questions