Design Pattern for Android

Prachi Mishra
3 min readJun 21, 2023

--

This content is for freshers who want to understand the basics of Design Patterns.

Q.1 What is the benefit of Design Patterns?

Reusability — Encapsulate the common code in one class and use it wherever you want. This means you won't need to write the redundant code again and again.

Maintainability — Design patterns provide clear guidelines and best practices, making it easier to make changes or add new features without introducing bugs or causing unintended side effects.

Separation of Concerns — The design pattern helps to separate the user interface logic from the business logic and data management, leading to cleaner and more maintainable code, e.g. MVVM, MVC, MVP

Scalability — Challenges in Android Development are dealing with the various screen sizes, orientations, and device capabilities. To achieve this, we have some of the design patterns like the Singleton pattern or Dependency Injection (DI) to facilitate scalability by providing a structured way to manage shared resources, dependencies, and global application state. These patterns make it easier to adapt the application to different contexts and ensure consistent behaviour across various devices.

Testability — Design patterns can improve the testability of Android applications. By promoting loose coupling and dependency injection, it becomes easier to isolate and test individual components or modules.

Patterns like the Repository pattern can also facilitate testing by providing a clear separation between data access and business logic, allowing for easier mocking and stubbing of data sources.

Performance — e.g. Adapter pattern, and view holder these are the pattern to use for the RecyclerViews performance of scrolling lists by reusing views instead of inflating new ones.

Overall if you see the Design pattern, it's all about how you are going to design the best apps where you don't need to compromise with App performance, Testing, Separation of concern etc.

Every design pattern is useful on its way, We need to understand what we can implement as per our requirements.

Here is some frequently useful design pattern in Android

Model-View-Controller — MVC is a classic design pattern that separates the application logic into three components: Model, View, and Controller. The Model represents the data and business logic, the View is responsible for displaying the UI, and the Controller handles user interactions and updates the Model and View accordingly.

Model-View-Presenter (MVP) — Model-View-Presenter (MVP): MVP is an evolution of the MVC pattern that further decouples the View and Model by introducing a Presenter.

The Presenter acts as an intermediary between the View and Model, handling user interactions from the View, updating the Model, and updating the View accordingly.

Model-View-ViewModel (MVVM): MVVM is another variation of the MVC pattern that introduces a View Model, which is responsible for exposing data and commands to the View.

The ViewModel acts as a bridge between the View and Model, allowing the View to observe and react to changes in the ViewModel.

Repository: The Repository pattern is used to abstract the data source from the rest of the application. It provides a consistent API for accessing and manipulating data, whether it comes from a local database, network service, or any other source.

The Repository pattern helps decouple the data access logic from the rest of the application, making it easier to switch or modify data sources.

Singleton: The Singleton pattern ensures that only one instance of a class is created throughout the application.

It provides a global point of access to that instance, allowing components to easily reference and share its functionality. Singletons are often used for managing shared resources or maintaining a global state.

Observer: The Observer pattern enables objects to subscribe and receive notifications when the state of another object changes.

In Android, this pattern is commonly used with Live Data or RxJava to implement reactive programming, allowing UI components to observe changes in data and update accordingly.

Builder: The Builder pattern is used to simplify the creation of complex objects by separating the construction logic from the object’s representation. It provides a fluent API for step-by-step construction of an object, allowing flexibility and readability when creating instances.

--

--

Prachi Mishra
Prachi Mishra

Written by Prachi Mishra

I am working As an Android Dev. Currently, developing an App for my Dream car (BMW) .In my Dev path If I find something interesting I like to share it with you.