The recommended way to structure your applications is dubbed 'the Elm Architecture.'
The simplest program consists of a
model record storing all data that might be updated, a union type
Msg that defines ways your program updates that data, a function
update which takes the model and a
Msg and returns a new model, and a function
view which takes a model and returns the HTML your page will display. Anytime a function returns a
Msg, the Elm runtime uses it to update the page.
MVP is an architectural pattern, a derivation of the Model–View–Controller. It's represented by three distinct components: Model, View and the Presenter. It was engineered to facilitate automated unit testing and improve the separation of concerns in presentation logic.
In examples you'll find a simple project built with MVP pattern in mind.
Demystifying MVC, MVP, MVVM and VIPER or any other design patterns to choose the best approach to building an app
Android Architecture Components is new collection of libraries that help you design robust, testable, and maintainable apps. Main parts are: Lifecycles, ViewModel, LiveData, Room.