Model View Presenter
The Model View Presenter (MVP) is an architecture pattern that separates objects into three distinct types mainly made up of Models, Views and Presenter.

MVP was invented to facilitate unit testing and to improve separation of concerns in presentation logic.
Each of the components in MVP play an important role:
- Model holds application data.