5. 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
6. Continue...
• Why MVP
• Totally decoupled
• Each layer can easily testable separately
• Modularize code
• Usecase can be well maintained.
• Easily scalable
7. 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.
9. 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.
11. • 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)
12. • 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)
13. • 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)
14. • 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)