android mvvm
TRANSCRIPT
![Page 1: Android MVVM](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/1.jpg)
MVVM Design PatternHow can I implement it on
Android
![Page 2: Android MVVM](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/2.jpg)
Who I am
David Estivariz
Android developerClean coding enthusiast
MVVM Design Pattern
![Page 3: Android MVVM](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/4.jpg)
MVVM Design pattern
WHY ??
![Page 5: Android MVVM](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/6.jpg)
MVVM Design pattern
How do I start?
![Page 7: Android MVVM](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/7.jpg)
Escape from spaghetti code!MVVM Design Pattern
![Page 8: Android MVVM](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/10.jpg)
MVVM Design Pattern
![Page 11: Android MVVM](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/11.jpg)
MVVM Design Pattern
Butterknife
![Page 12: Android MVVM](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/12.jpg)
Butterknife: before & afterMVVM Design Pattern
![Page 13: Android MVVM](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/13.jpg)
MVVM Design Pattern
Dagger
![Page 14: Android MVVM](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/14.jpg)
Dagger: before & afterMVVM Design Pattern
![Page 15: Android MVVM](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/15.jpg)
MVVM Design Pattern
Android Binding
![Page 16: Android MVVM](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/16.jpg)
MVVM Design Pattern
View - xml layout
![Page 17: Android MVVM](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/18.jpg)
MVVM Design Pattern
ViewModel
![Page 19: Android MVVM](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/21.jpg)
MVVM Design Pattern
Architecture overview
![Page 22: Android MVVM](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/22.jpg)
MVVM Design Pattern
Package organisation
![Page 23: Android MVVM](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/23.jpg)
MVVM Design Pattern
Any question?
![Page 24: Android MVVM](https://reader036.vdocuments.net/reader036/viewer/2022062310/586fd92d1a28ab18428b58b9/html5/thumbnails/24.jpg)
MVVM Design Pattern