mvp clean architecture

18
MVP Architecture Himanshu Dudhat | Android Developer

Upload: himanshu-dudhat

Post on 15-Apr-2017

265 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: MVP Clean  Architecture

MVP ArchitectureHimanshu Dudhat | Android Developer

Page 2: MVP Clean  Architecture

Why we need software design pattern

• Clear Usecases

• Easy to maintain

• Easy to test

• Very cohesive. Easy to understand

• Decoupled

Page 3: MVP Clean  Architecture

What is role of architecture

Page 4: MVP Clean  Architecture

What is a role of developer

Page 5: MVP Clean  Architecture

Why we choose MVP over MVC and MVVM

• What is MVC – Model View Control

• Android provide MVC by default

• Controller is tightly coupled with view. Each action is correlated to call of Controller with view action.

• What is MVVM – Model View View-Model

• Model –business rules

• View- layout

• ViewModel- Bridge for model and view

• Avoided as its newly introduced and binding is still not supported in some views

Page 6: MVP Clean  Architecture

Continue...

• Why MVP

• Totally decoupled

• Each layer can easily testable separately

• Modularize code

• Usecase can be well maintained.

• Easily scalable

Page 7: MVP Clean  Architecture

What is MVP

• The Presenter

• The presenter is responsible to act as the middle man between view and model. It

retrieves data from the model and returns it formatted to the view.

• The View

• The view-interface, usually implemented by an Activity (it may be a Fragment, a View depending on how the app is structured), will contain a reference to the presenter. It will be responsible for creating the presenter object. The only thing that the view will do is calling a method from the presenter every time there is an interface action (a button click for example).

• The model

• Model would only be the gateway to the domain layer or business logic. The model would probably be an interactor that implements a use case.

Page 8: MVP Clean  Architecture

Clean architecture by Unkle Bobs

Source : 8thlight.com

Page 9: MVP Clean  Architecture

Continue...

• Entities

• Enterprise level classes

• Usecases

• Handle the flow to and from the entities

• InterfaceAdapter

• This is a set of the adapter converts data from the format most convenient for the usecase and entities(Presenter and controllers belong here)

• Framework and Drivers

• Contains all the detail related to the app. UI, Framework and database etc.

Page 10: MVP Clean  Architecture

App architecture

Page 11: MVP Clean  Architecture

• Application business rules

• All use cases

• Usecases implementation (Controllers)

• Can access Entities Classes

• Junit or Mockito (functional testing) can be applicable here

Domain Layer (Domain module)

Page 12: MVP Clean  Architecture

• Basic java classes or we can say Utility classes

• That can also be functionally tested by Junit or Mockito

• This layer is not related to app business rules and it is decoupled

• This layer can be used any app

Entities Layer (Framework Module)

Page 13: MVP Clean  Architecture

• Logic related to UI.

• Logic related to Activity or Fragment or View life cycle

• Fragment and Activities are only views in over case

• Strongly connected to Android SDK

• Integration testing, UI tests

• Tools: Espresso, Robotium or Roboletic

Presentation layer (app module)

Page 14: MVP Clean  Architecture

• Deliver data needed in app

• Ether from database, web api or file storage

• For database it is recommended to use ORM

• And for web api Retrofit or Volley

Data Layer (Model Module)

Page 15: MVP Clean  Architecture

Code Time

Page 16: MVP Clean  Architecture

References

• Clean architecture by Unkle Bobs

• http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html

• Android arch. By Saul Molinero

• http://saulmm.github.io/2015/02/02/A-useful-stack-on-android-1,-architecture/

• Other

• https://github.com/antoniolg/androidmvp

• http://antonioleiva.com/mvp-android

Page 17: MVP Clean  Architecture

Questions?

Page 18: MVP Clean  Architecture

Thanks!

+HimanshuDudhat

@HimanshuDudhat

[email protected]

Himanshu Dudhat

Team Lead - Android @ Cygnet Infotech Pvt. Ltd.

Sr. Software Engineer @ Cygnet Infotech Pvt. Ltd