Covers several Android App Architecture such as MVP, MVVM, MVC. Demonstrates how specific architecture can help solving problems with different set of incoming parameters, such as absence of API or UI/UX designs.
https://youtu.be/BklGDBXpDbo
clarify that MVC, MVP, MVVM (or any other) are not architecture patterns but design patterns for the presentation layer (because the true architecture as such is ‘the layers architecture’) What are the currently widely used Android Application Architectures?
fun requestItems(): List<String> = listOf() } class DataRepository { private val roomDatabase = RoomDatabase() fun requestItems(): List<String> = roomDatabase.requestItems() } // Inversion of control applied class DataRepository2(private val roomDatabase: RoomDatabase) { fun requestItems(): List<String> { val result = roomDatabase.requestItems() return result } }
fun requestItems(): List<String> } class DataRepository3(private val dataPersistence: DataPersistence) { fun requestItems(): List<String> { val result = dataPersistence.requestItems() return result } } class RoomDatabase2 : DataPersistence { override fun requestItems(): List<String> = listOf() }
// Comes from [MyViewCallbacks] override fun showUserProfile() {} // Comes from [MyRouter] override fun navigateToLogin() {} fun onCreate() { val presenter = MyPresenter(MyInteractor()) presenter.takeRouter(this) presenter.takeView(this) } } Implementation Client Code
designs provided, but subject to change • API partially ready • No Business rules available yet View<Interface> SampleActivity SampleFragment View Presenter<Interface> Presenter Repository Model Notify User Interaction Ask View to setup itself Update Data State Initial Solution MVP
designs provided, but subject to change • API partially ready • No Business rules available yet View<Interface> SampleActivity SampleFragment View Presenter<Interface> Presenter Repository Model Notify User Interaction Ask View to setup itself Update Data State Initial Solution MVP
designs provided, but subject to change • API partially ready • No Business rules available yet View<Interface> SampleActivity SampleFragment View Presenter<Interface> Presenter Repository Model Notify User Interaction Ask View to setup itself Update Data State Initial Solution MVP
designs provided, but subject to change • API partially ready • No Business rules available yet View<Interface> SampleActivity SampleFragment View Presenter<Interface> Presenter Repository Model Notify User Interaction Ask View to setup itself Update Data State Initial Solution MVP
designs provided, but subject to change • API partially ready • No Business rules available yet View<Interface> SampleActivity SampleFragment View Presenter<Interface> Presenter Repository Model Notify User Interaction Ask View to setup itself Update Data State Initial Solution MVP
designs provided, but subject to change • API partially ready • No Business rules available yet View<Interface> SampleActivity SampleFragment View Presenter<Interface> Presenter Repository Model Notify User Interaction Ask View to setup itself Update Data State View<Interface> SampleActivity SampleFragment View Repository Model Initial Solution MVP
designs provided, but subject to change • API partially ready • No Business rules available yet Interface *View *Router Presenter Aka UseCase Interactor DataSource Entity Interface View Interface Router Final Solution VIPER
designs provided, but subject to change • API partially ready • No Business rules available yet Interface *View *Router Presenter Aka UseCase Interactor DataSource Entity Interface View Interface Router Final Solution VIPER
designs provided, but subject to change • API partially ready • No Business rules available yet Interface *View *Router Presenter Aka UseCase Interactor DataSource Entity Interface View Interface Router Final Solution VIPER
designs provided, but subject to change • API partially ready • No Business rules available yet Interface *View *Router Presenter Aka UseCase Interactor DataSource Entity Interface View Interface Router Final Solution VIPER
designs provided, but subject to change • API partially ready • No Business rules available yet Interface *View *Router Presenter Aka UseCase Interactor DataSource Entity Interface View Interface Router Final Solution VIPER
WebAPI • No Business rules available yet View<Interface> SampleActivity SampleFragment View Presenter<Interface> Presenter Repository Model Notify User Interaction Ask View to setup itself Update Data State Initial Solution MVP
WebAPI • No Business rules available yet View<Interface> SampleActivity SampleFragment View Presenter<Interface> Presenter Repository Model Notify User Interaction Ask View to setup itself Update Data State Initial Solution MVP
WebAPI • No Business rules available yet View<Interface> SampleActivity SampleFragment View Presenter<Interface> Presenter Repository Model Notify User Interaction Ask View to setup itself Update Data State Initial Solution MVP
WebAPI • No Business rules available yet View<Interface> SampleActivity SampleFragment View Presenter<Interface> Presenter Repository Model Notify User Interaction Ask View to setup itself Update Data State Initial Solution MVP
WebAPI • No Business rules available yet View<Interface> SampleActivity SampleFragment View Presenter<Interface> Presenter Repository Model Notify User Interaction Ask View to setup itself Update Data State View<Interface> SampleActivity SampleFragment View Repository Model Initial Solution MVP Presenter<Interface> Presenter
WebAPI • No Business rules available yet SampleActivity SampleFragment sample_activity.xml View Presenter<Interface> SampleActivity ViewModel Repository Model Notify User Interaction Observe ViewState Update Data State Final Solution MVVM
WebAPI • No Business rules available yet SampleActivity SampleFragment sample_activity.xml View Presenter<Interface> SampleActivity ViewModel Repository Model Notify User Interaction Observe ViewState Update Data State Final Solution MVVM
WebAPI • No Business rules available yet SampleActivity SampleFragment sample_activity.xml View Presenter<Interface> SampleActivity ViewModel Repository Model Notify User Interaction Observe ViewState Update Data State Final Solution MVVM
WebAPI • No Business rules available yet SampleActivity SampleFragment sample_activity.xml View Presenter<Interface> SampleActivity ViewModel Repository Model Notify User Interaction Observe ViewState Update Data State Final Solution MVVM
WebAPI • No Business rules available yet SampleActivity SampleFragment sample_activity.xml View Presenter<Interface> SampleActivity ViewModel Repository Model Notify User Interaction Observe ViewState Update Data State SampleActivity SampleFragment sample_activity.xml View Repository Model Final Solution MVVM ViewModel<Interface> SampleViewModel ViewModel