Architecture of Mobile Applications

1. Definition and Importance

1.8. Model-View-Controller (MVC), Model-View-ViewModel (MVVM), Model-View-Intent (MVI)

Model-View-Controller (MVC), Model-View-ViewModel (MVVM), Model-View-Intent (MVI): These are primarily concerned with the organization within the presentation layer and how it interacts with the business logic layer. They define how the UI, data, and user interactions are managed. Which one is best? It depends on the complexity of your app and your development team's preferences. For simpler apps, MVC might be sufficient. For more complex apps, MVVM or MVI might be better choices. MVI is often favored for its testability and predictable nature, especially in apps with complex state management.


Internal Architecture

  • Clean Architecture: A focus on keeping the core business logic independent of frameworks and implementation details. It emphasizes dependency inversion, ensuring that high-level modules don't depend on low-level modules.
  • Domain-Driven Design (DDD): A focus on understanding and modeling the business domain. It emphasizes the use of domain-specific language and the creation of entities and value objects that represent the core concepts of the business.
  • Reactive Programming: A paradigm for dealing with asynchronous data streams. It uses concepts like observables and streams to handle events and data changes in a declarative way.