24
MVVM Design Pattern How can I implement it on Android

Android MVVM

Embed Size (px)

Citation preview

Page 1: Android MVVM

MVVM Design PatternHow can I implement it on

Android

Page 2: Android MVVM

Who I am

[email protected]

David Estivariz

Android developerClean coding enthusiast

MVVM Design Pattern

Page 3: Android MVVM

What I’m going to talk about?

Clean code and design patterns, why?

Best practices

MVP vs MVVM

Helping Frameworks or libraries

Android MVVM Architecture example

MVVM Design Pattern

Page 4: Android MVVM

MVVM Design pattern

WHY ??

Page 5: Android MVVM

Why I use a design pattern?Easier to read/understand

Easier to scale

Easier to test

Easier to find and resolve bugs

Easier to be applied to any other language (object-oriented)

Reduce technical risk

And a long etc…

MVVM Design Pattern

Page 6: Android MVVM

MVVM Design pattern

How do I start?

Page 7: Android MVVM

Escape from spaghetti code!MVVM Design Pattern

Page 8: Android MVVM

Best Practices Choose your naming well

Use meaningful names …

but don’t state the obvious

Write small methods

Write methods that only do one thing

Encapsulate boolean expressions or overly-complex code

Avoid deep nesting

Replace constructors with builders (see builder pattern)

Use refactoring patterns to fight against legacy

MVVM Design Pattern

Page 9: Android MVVM

MVP vs MVVMMVVM Design Pattern

View ViewModel Model

Data Binding and Commands

ViewModel updates the model

Send notifications Send notifications

View ModelPresenter

Presenter updates the modelUser events

Updates Fire events

Page 10: Android MVVM

MVVM Design Pattern

Page 11: Android MVVM

MVVM Design Pattern

Butterknife

Page 12: Android MVVM

Butterknife: before & afterMVVM Design Pattern

Page 13: Android MVVM

MVVM Design Pattern

Dagger

Page 14: Android MVVM

Dagger: before & afterMVVM Design Pattern

Page 15: Android MVVM

MVVM Design Pattern

Android Binding

Page 16: Android MVVM

MVVM Design Pattern

View - xml layout

Page 17: Android MVVM

MVVM Design Pattern

View - activity

Android Data Binding framework auto generates code

Just get Binding object and set params defined at xml

Then xml will automatically get data from the view model

Page 18: Android MVVM

MVVM Design Pattern

ViewModel

Page 19: Android MVVM

MVVM Design Pattern

Model

Model mustn’t do anything not related with itself

ViewModel will show model changes in the view

Simple and clean

Page 20: Android MVVM

MVVM Design Pattern

Custom Binding Adapters

Using Custom Binding adapters give you more flexibility

A binding adapter can use one or more parameters

Their responsibility is to perform actions in the views depending in parameters from the model

Page 21: Android MVVM

MVVM Design Pattern

Architecture overview

Page 22: Android MVVM

MVVM Design Pattern

Package organisation

Page 23: Android MVVM

MVVM Design Pattern

Any question?

Page 24: Android MVVM

MVVM Design Pattern