Model-View-View Model (MVVM)
The Model-View-View Model (MVVM) prototype is for more than just Microsoft .NET Framework projects. Discover how to apply it to Android development through its open source counterpart, MvvmCross. For the development of mobile applications, a bulk of app developers used to favor the MVC structure as it was the most straightforward architecture to use. At Sovereign, we provide android app development services, mobile app design and development services to develop custom applications using MVVM model.
According to study on the Model View Controller (MVC) design patterns and presentation model, Microsoft introduced MVVM as the preferred pattern in many of its platforms, including Silverlight, Windows Presentation Foundation (WPF) and Windows Phone. Up till now it’s the pattern of choice in Microsoft frameworks, third-party frameworks make it possible to extend MVVM into other platforms, such as iOS and Android, as well. In this blog we will take a look at the basics of MVVM along with its benefits that we are using in MVVM designing, and then dig into how we apply MVVM to Android applications using the MvvmCross framework.
Modularization and Clean Architecture
Modularization in Android apps represents a software design outline that separates functionalities into modules. Every Android application can be modularized by dividing the application module into library modules. The library element will consist its resources, manifest file, and classes. During the end, the build tool will merge it into a single APK.
- Clean Architecture: The concept of Clean Architecture was originally proposed by Robert C. Martin, known also as Uncle Bob. The key goal of this approach is the separation of concerns to separate your code into independent layers and design it to depend on abstractions instead of concrete implementations.
MVVM: Model-view-view model is a software design pattern consisting of three layers:
- Model (in our architecture in combination with Clean Architecture refers to a domain model, which represents a real state content).
- View (activities, fragments, it displays data received through view-model).
View Model is the View Model represents an abstraction of the view, it receives data from Model; perform necessary UI logic and then expose appropriate data to the View, next to that, View Model manipulate the Model based on actions on the View. The View has a reference to a View Model but View Model doesn’t know anything about the View.
Today, in this blog, you can get to know about our primary focus will be specifically on the Android Architecture and on finding out the main difference between Minimum Viable Product (MVP) vs. Model–View–View Model (MVVM). For Android Apps, the two architectures that are highly recommended to use are MVP and MVVM instead of the Clean Architecture and MVC.
The Layers of MVVM with Clean Architecture: Even within the Android app architecture we’re using, there are many ways to structure your file/folder hierarchy. I like to group project files based on features. We can choose to free whatever project structure suits. The code is divided into three separate layers:
- Presentation Layer: This includes our Activitys, Fragments, and View Models. An Activity should be as dumb as possible. Never put your business logic in Activitys. An Activitys will call to a ViewModel and a ViewModel will talk to the domain layer to perform actions. A View Model never talks to the data layer directly.
- Domain Layer: The domain layer contains all the use cases of your application. In this example, we have UseCase, an abstract class. All our UseCases will extend this class.
Data Layer: This has all the repositories which the domain layer can use. Data layer exposes a data source API to outside classes.
MVVM with Clean architecture is a topic that never gets old in the Android Development. Preferably, it should be the biggest layer, in Android Apps development usually tends. Sovereign developers makes easier to understand Android mobile app development using MVVM with architecture components given above.