feature_app feature_lib single_feature_app 4 feature_app feature_lib The N26 android project Setup before the initiative app core libraries folder features folder
different components in a Gradle-based project. It refers to the relationships between different modules, libraries, and other dependencies that make up a gradle application. The Gradle dependency graph
modules should depend on abstractions rather than in low-level modules. • Abstractions should not depend on details. Details should depend on abstractions.
modules should depend on abstractions rather than in low-level modules. • Abstractions should not depend on details. Details should depend on abstractions. SOLID D
modules should depend on abstractions rather than in low-level modules. • Abstractions should not depend on details. Details should depend on abstractions. Dependency inversion principle
// Starting connection... } override fun disconnectFromInternet() { // Disconnecting... } } public interface NetworkApi { fun connectToInternet() fun disconnectFromInternet() } Apply dependency inversion Solution proposed for the hypothesis
// Starting connection... } override fun disconnectFromInternet() { // Disconnecting... } } public interface NetworkApi { fun connectToInternet() fun disconnectFromInternet() } Apply dependency inversion Solution proposed for the hypothesis abstraction
// Starting connection... } override fun disconnectFromInternet() { // Disconnecting... } } public interface NetworkApi { fun connectToInternet() fun disconnectFromInternet() } Apply dependency inversion Solution proposed for the hypothesis abstraction api
// Starting connection... } override fun disconnectFromInternet() { // Disconnecting... } } public interface NetworkApi { fun connectToInternet() fun disconnectFromInternet() } Apply dependency inversion Solution proposed for the hypothesis abstraction details api
// Starting connection... } override fun disconnectFromInternet() { // Disconnecting... } } public interface NetworkApi { fun connectToInternet() fun disconnectFromInternet() } Apply dependency inversion Solution proposed for the hypothesis abstraction details api core
that is built as a single, unified unit. All components and features of the application are tightly integrated into a single codebase, often resulting in a large and complex code structure. Legacy monoliths
are still in use but are no longer actively developed or maintained. These systems are usually built using older technologies, frameworks, and practices that might not align with modern software development trends and best practices. Legacy systems can pose challenges in terms of scalability, maintenance, and integration with newer technologies. Legacy monoliths
Dagger • Merges components and modules using annotations Hilt • Dependency injection framework • Independent library • Simpli fi es Dagger DI for Android.
Dagger • Merges components and modules using annotations • @ContributesBinding is nice Hilt • Dependency injection framework • Independent library • Simpli fi es Dagger DI for Android.
Dagger • Merges components and modules using annotations • @ContributesBinding is nice Hilt • Dependency injection framework • Independent library • Simpli fi es Dagger DI for Android. Both makes Dagger setup simpler