One of the oldest software architecture | Developed as the second iteration of software architecture which is advance from MVC. | Industry-recognized architecture pattern for applications. |
UI(View) and data-access mechanism(Model) are tightly coupled. | It resolves the problem of having a dependent View by using Presenter as a communication channel between Model and View. | This architecture pattern is more event-driven as it uses data binding and thus makes easy separation of core business logic from the View. |
Controller and View exist with the one-to-many relationship. One Controller can select a different View based upon required operation. | The one-to-one relationship exists between Presenter and View as one Presenter class manages one View at a time. | Multiple View can be mapped with a single ViewModel and thus, the one-to-many relationship exists between View and ViewModel. |
The View has no knowledge about the Controller. | The View has references to the Presenter. | The View has references to the ViewModel |
Difficult to make changes and modify the app features as the code layers are tightly coupled. | Code layers are loosely coupled and thus it is easy to carry out modifications/changes in the application code. | Easy to make changes in the application. However, if data binding logic is too complex, it will be a little harder to debug the application. |
User Inputs are handled by the Controller. | The View is the entry point to the Application | The View takes the input from the user and acts as the entry point of the application. |
Ideal for small scale projects only. | Ideal for simple and complex applications. | Not ideal for small scale projects. |
Limited support to Unit testing. | Easy to carry out Unit testing but a tight bond of View and Presenter can make it slightly difficult. | Unit testability is highest in this architecture. |
This architecture has a high dependency on Android APIs. | It has a low dependency on the Android APIs. | Has low or no dependency on the Android APIs. |
It does not follow the modular and single responsibility principle. | Follows modular and single responsibility principle. | Follows modular and single responsibility principle. |