Mobile Development Platforms
- Native Development platforms This platforms is divided into two:
- iOS Development: Languages: Swift, Objective-C Frameworks: UIKit, SwiftUI
- Android Development Languages: Java, Kotlin Frameworks: Android SDK
- Cross-Platform Development Platforms This platforms includes building mobile applications that and be used in both Android and IoS platforms
Language: JavaScript
Framework: React Native
Language :Dart
Framework:Flutter
SOFTWARE ARCHITECTURE PATTERNS USED IN MOBILE DEVELOPMENT PLATFORMS WITH THERE PROS AND CONS
1. Model-View-Controller (MVC)
This Divides the application into three interconnected components which are:
- Model: Manages the data and business logic.
- View: Displays the data and sends user commands to the controller.
- Controller: Interprets user inputs and updates the model and view.
Pros:
- Separation of concerns making the code base easier to manage and test.
- Re-usability of the model and view components.
- Simple to understand and implement
Cons:
- Can lead to a "Massive View Controller" problem, where the controller becomes too large and complex.
- Tightly coupled components can make changes harder.
2. Model-View-Presenter (MVP)
This is an evolution of MVC where:
- Model: Manages the data.
- View: Displays the data and sends user actions to the presenter.
- Presenter: Acts as a middleman between the view and the model, handling all the presentation logic.
Pros:
- Better separation of concerns compared to MVC.
- Presenter is easier to test because it does not depend on Android/iOS framework components.
- Views are more focused on displaying data and less on handling logic.
Cons:
- Can result in a lot of boilerplate code.
- Presenter can become very large and complex.
3. Model-View-View-Model (MVVM)
This architecture divides the application into:
- Model: Represents the data and business logic.
- View: Displays the data.
- View Model: Acts as a link between the view and the model, providing data to the view and handling user interactions.
Pros:
- Clear separation of responsibilities which makes the code easier to manage and test.
- Supports data binding which reduces boilerplate code in the view.
- View Model is easy to test because it does not depend on the view.
Cons:
- Can be more complex to implement compared to MVC and MVP.
- Data binding can add a layer of indirection, making debugging more difficult.
4. Clean Architecture
This emphasizes on separation of concerns by organizing the code into multiple layers:
- Entities: Represent the core business logic.
- Use Cases/Interactions: Encapsulate specific business rules.
- Interface Adapters: Convert data from the use cases to a form that the external systems can use.
- Frameworks and Drivers: External components like databases, UI, and external APIs.
Pros:
- High level of separation of concerns which makes the code base highly maintainable and testable.
- Each layer is independent, which improves code modularity.
- Facilitates easier testing of individual components.
Cons:
- Can be overkill for small projects.
- Involves a steep learning curve and more boilerplate code.
- Requires careful planning and design.
#Little about myself
I am a passionate woman diving into mobile development with React Native. Joining the HNG Internship, I seek to hone my skills, gain real-world experience, and collaborate with like-minded individuals. This journey is a stepping stone to my dream of creating impactful mobile applications.
(https://hng.tech/internship)
(https://hng.tech/hire)