# Dependency Inversion

Published articles for Dependency Inversion.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Dependency Injection and Dependency Inversion in Node.js and TypeScript

DevFeed: [Dependency Injection and Dependency Inversion in Node.js and TypeScript](<https://devfeed.tech/articles/dependency-injection-in-node-js-typescript-the-part-nobody-teaches-you-18108.md>)

Original publisher: [Read original article](<https://thetshaped.dev/p/dependency-injection-in-nodejs-and-typescript-dependency-inversion-part-no-body-teaches-you>)

Author: Petar Ivanov

Published: 2026-03-29T12:19:37Z

Content type: tutorial

Language: en

Sources: [The T-Shaped Dev](<https://devfeed.tech/sources/the-t-shaped-dev.md>)

Topics: [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [Node.js](<https://devfeed.tech/topics/node-js.md>), [Dependency Inversion](<https://devfeed.tech/topics/dependency-inversion.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [Express](<https://devfeed.tech/topics/express.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Drizzle](<https://devfeed.tech/topics/drizzle.md>), [SendGrid](<https://devfeed.tech/topics/sendgrid.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>)

Tags: [dependency-inversion](<https://devfeed.tech/tags/dependency-inversion.md>), [di](<https://devfeed.tech/tags/di.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [testing](<https://devfeed.tech/tags/testing.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

A tutorial on using plain TypeScript dependency injection in Node.js. It distinguishes dependency injection from dependency inversion and argues that explicit dependencies can improve testability and make implementations easier to swap.

### Source excerpt

Learn the hidden costs about importing everything directly and the structural change you need to make. (8 min)

## Maximizing Shared Code in Kotlin Multiplatform Apps

DevFeed: [Maximizing Shared Code in Kotlin Multiplatform Apps](<https://devfeed.tech/articles/the-art-of-multiplatform-programming-the-secret-to-maximizing-shared-code-34121.md>)

Original publisher: [Read original article](<https://artandscienceofcoding.com/science/kmm-maximizing-shared-code/>)

Author: Derek Lee

Published: 2022-10-01T00:00:00Z

Content type: tutorial

Language: en

Sources: [art and science of coding](<https://devfeed.tech/sources/art-and-science-of-coding.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [Dependency Inversion](<https://devfeed.tech/topics/dependency-inversion.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [dependency-inversion](<https://devfeed.tech/tags/dependency-inversion.md>), [dependency-inversion-principle](<https://devfeed.tech/tags/dependency-inversion-principle.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [programming](<https://devfeed.tech/tags/programming.md>), [science](<https://devfeed.tech/tags/science.md>)

### AI overview

This tutorial explains how to maximize shared code in Kotlin Multiplatform applications for iOS and Android. It recommends isolating platform dependencies behind a platform-independent interface and using Dependency Injection and the Dependency Inversion Principle to improve maintainability and reusability.

### Source excerpt

TL/DR; - Writing your platform-dependent code for iOS or Android requires first understanding the platform API dependencies to help you craft a shared platform-independent interface. - Isolate platform dependencies to the smallest surface area possible to increase maintainability and reusability. - Leveraging Dependency Injection (DI) and the Dependency Inversion Principle (DIP) is key to effective multiplatform programming.

## Dependency Inversion as a Driver to Scale Mobile Development

DevFeed: [Dependency Inversion as a Driver to Scale Mobile Development](<https://devfeed.tech/articles/dependency-inversion-as-a-driver-to-scale-mobile-development-2024.md>)

Original publisher: [Read original article](<https://developers.soundcloud.com/blog//dependency-inversion-as-a-driver-to-scale-mobile-development>)

Published: 2021-02-24T00:00:00Z

Content type: article

Language: en

Sources: [SoundCloud Backstage Blog](<https://devfeed.tech/sources/soundcloud-backstage-blog.md>)

Topics: [Dependency Inversion](<https://devfeed.tech/topics/dependency-inversion.md>), [Dependency management](<https://devfeed.tech/topics/dependency-management.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Frameworks](<https://devfeed.tech/topics/frameworks.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>), [Microservice](<https://devfeed.tech/topics/microservice.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [dependency-inversion](<https://devfeed.tech/tags/dependency-inversion.md>), [frameworks](<https://devfeed.tech/tags/frameworks.md>), [ios](<https://devfeed.tech/tags/ios.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

This article explains how SoundCloud applied the Dependency Inversion Principle to manage dependencies in a modularized iOS codebase. It describes using contracts or APIs between frameworks to reduce coupling, control dependency graphs, and support maintainable mobile development as the team grows.

### Source excerpt

SoundCloud's iOS codebase faced a radical change a couple of years ago. The team had decided to modularize the codebase into frameworks...

## Кошелёк Mobile Challenge: итоги конкурса и подробный разбор решений командой разработки

DevFeed: [Кошелёк Mobile Challenge: итоги конкурса и подробный разбор решений командой разработки](<https://devfeed.tech/articles/mobile-challenge-37995.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/koshelek/articles/533712/>)

Author: dydus0x14 (Кошелёк)

Published: 2020-12-18T10:20:45Z

Content type: article

Language: ru

Sources: ["Кошелёк" RU](<https://devfeed.tech/sources/ru.md>)

Topics: [Mobile](<https://devfeed.tech/topics/mobile.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Dependency Inversion](<https://devfeed.tech/topics/dependency-inversion.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [dependency-inversion](<https://devfeed.tech/tags/dependency-inversion.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [swift](<https://devfeed.tech/tags/swift.md>), [tag-3dec2b56683c](<https://devfeed.tech/tags/tag-3dec2b56683c.md>), [tag-8645b89747c6](<https://devfeed.tech/tags/tag-8645b89747c6.md>), [tag-a699b654c732](<https://devfeed.tech/tags/tag-a699b654c732.md>), [tag-e6b151cb519f](<https://devfeed.tech/tags/tag-e6b151cb519f.md>), [tag-ef22f3806f5d](<https://devfeed.tech/tags/tag-ef22f3806f5d.md>)

### AI overview

The article reports the results of the Wallet Mobile Challenge, a developer competition for native iOS and Android applications. It presents the winners, contest statistics, judging criteria, technical requirements, and a review of submitted solutions, including Swift implementations and common dependency-inversion issues.

### Source excerpt

У нас было две платформы, 1 000 000 рублей призового фонда, 6 призовых мест, 30 тысяч строк кода, которые нужно прочитать и оценить, а также 20 страниц фидбеков, несколько критериев оценки, ящик "Бадвайзера", пинта чистого эфира и 12 пузырьков успокоительного. Не то, чтобы всё это было категорически необходимо для проведения конкурса разработчиков, но если уж начал оценивать решения, то к делу надо подходить серьёзно. Подводим итоги конкурса Кошелёк Mobile Challenge и в деталях разбираем решения участников. Читать далее

## Speeding Up Builds with Dagger Reflect

DevFeed: [Speeding Up Builds with Dagger Reflect](<https://devfeed.tech/articles/speeding-up-builds-with-dagger-reflect-2019.md>)

Original publisher: [Read original article](<https://developers.soundcloud.com/blog//dagger-reflect>)

Published: 2020-01-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [SoundCloud Backstage Blog](<https://devfeed.tech/sources/soundcloud-backstage-blog.md>)

Topics: [Dagger](<https://devfeed.tech/topics/dagger.md>), [build performance](<https://devfeed.tech/topics/build-performance.md>), [Android](<https://devfeed.tech/topics/android.md>), [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [Dependency Inversion](<https://devfeed.tech/topics/dependency-inversion.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [migration](<https://devfeed.tech/topics/migration.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [dagger](<https://devfeed.tech/tags/dagger.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [dependency-inversion](<https://devfeed.tech/tags/dependency-inversion.md>), [developers](<https://devfeed.tech/tags/developers.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [make](<https://devfeed.tech/tags/make.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [performance](<https://devfeed.tech/tags/performance.md>), [productivity](<https://devfeed.tech/tags/productivity.md>)

### AI overview

This article explains how SoundCloud experimented with Dagger Reflect to reduce Android build times caused by Dagger annotation processing. It contrasts Dagger's compile-time code generation with reflection-based dependency injection, describes the build-time and startup-time tradeoff, and explains why Dagger Reflect was chosen over migrating the codebase to a runtime-based framework.

### Source excerpt

A large portion of an Android app's build time can consist of Dagger annotation processing, and most developers agree that productivity is...

## Dependency Injection - All the Must-Know Concepts to start using it

DevFeed: [Dependency Injection - All the Must-Know Concepts to start using it](<https://devfeed.tech/articles/dependency-injection-all-the-must-know-concepts-to-start-using-it-27158.md>)

Original publisher: [Read original article](<https://antonioleiva.com/dependency-injection-principles>)

Published: 2019-06-26T00:00:00Z

Content type: tutorial

Language: en

Sources: [Antonio Leiva](<https://devfeed.tech/sources/antonio-leiva.md>)

Topics: [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [Dependency Inversion](<https://devfeed.tech/topics/dependency-inversion.md>), [Android](<https://devfeed.tech/topics/android.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [article](<https://devfeed.tech/tags/article.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [dependency-inversion](<https://devfeed.tech/tags/dependency-inversion.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>)

### AI overview

A video tutorial introduces the concepts behind dependency injection, including dependencies, the Dependency Inversion Principle, Inversion of Control, dependency provisioning, Service Locator, and Dependency Injection. It also references Koin for dependency injection on Android.

### Source excerpt

Everything Android, Kotlin and other random topics

## Clean architecture for Android with Kotlin: a pragmatic approach for starters

DevFeed: [Clean architecture for Android with Kotlin: a pragmatic approach for starters](<https://devfeed.tech/articles/clean-architecture-for-android-with-kotlin-a-pragmatic-approach-for-starters-27142.md>)

Original publisher: [Read original article](<https://antonioleiva.com/clean-architecture-android>)

Published: 2018-09-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [Antonio Leiva](<https://devfeed.tech/sources/antonio-leiva.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Dependency Inversion](<https://devfeed.tech/topics/dependency-inversion.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [clean-architecture](<https://devfeed.tech/tags/clean-architecture.md>), [decoupling](<https://devfeed.tech/tags/decoupling.md>), [dependency-inversion](<https://devfeed.tech/tags/dependency-inversion.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [oop](<https://devfeed.tech/tags/oop.md>), [programming](<https://devfeed.tech/tags/programming.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

A pragmatic introductory tutorial on clean architecture for Android apps using Kotlin. It focuses on dependency inversion, explains the tradeoff between decoupling and added complexity, and introduces a five-layer application structure.

### Source excerpt

Everything Android, Kotlin and other random topics

## Automocking and the Dependency Inversion Principle

DevFeed: [Automocking and the Dependency Inversion Principle](<https://devfeed.tech/articles/automocking-and-the-dependency-inversion-principle-20775.md>)

Original publisher: [Read original article](<https://conductofcode.io/post/automocking-and-the-dependency-inversion-principle/>)

Author: {"twitter"=\>"hlaueriksson"}

Published: 2017-02-28T20:00:00Z

Content type: tutorial

Language: en

Sources: [Henrik Lau Eriksson](<https://devfeed.tech/sources/henrik-lau-eriksson.md>)

Topics: [Dependency Inversion](<https://devfeed.tech/topics/dependency-inversion.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [C#](<https://devfeed.tech/topics/csharp.md>), [IoC (Disambiguation)](<https://devfeed.tech/topics/ioc.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [client](<https://devfeed.tech/topics/client.md>)

Tags: [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [dependency-inversion](<https://devfeed.tech/tags/dependency-inversion.md>), [framework](<https://devfeed.tech/tags/framework.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [testing](<https://devfeed.tech/tags/testing.md>), [xunit](<https://devfeed.tech/tags/xunit.md>)

### AI overview

This tutorial explains how to adapt an automocking base class for C# code that uses internal classes. It shows how friend assemblies, public interfaces, an IoC container, and injected real or fake dependencies can support unit testing while preserving dependency inversion.

### Source excerpt

I had reason to revisit the automocked base class from a previous blog post. I am working with another code base and have new opportunities for automocking. We have a lot of internal classes. Approximately 30% of the classes are marked as internal. The old approach did not work anymore.

## Dependency injection on Android: Dagger (Part 1)

DevFeed: [Dependency injection on Android: Dagger (Part 1)](<https://devfeed.tech/articles/dependency-injection-on-android-dagger-part-1-27157.md>)

Original publisher: [Read original article](<https://antonioleiva.com/dependency-injection-android-dagger-part-1>)

Published: 2014-06-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [Antonio Leiva](<https://devfeed.tech/sources/antonio-leiva.md>)

Topics: [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [Android](<https://devfeed.tech/topics/android.md>), [Dagger](<https://devfeed.tech/topics/dagger.md>), [Dependency Inversion](<https://devfeed.tech/topics/dependency-inversion.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [dagger](<https://devfeed.tech/tags/dagger.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [dependency-inversion](<https://devfeed.tech/tags/dependency-inversion.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

This first part of a series introduces dependency injection and dependency inversion for Android projects using Dagger. It explains dependencies as coupling between modules, why hard dependencies hinder isolated unit testing, and how constructor injection passes dependencies into objects instead of creating them internally.

### Source excerpt

Everything Android, Kotlin and other random topics

## Dependency Inversion Principle

DevFeed: [Dependency Inversion Principle](<https://devfeed.tech/articles/dependency-inversion-principle-40667.md>)

Original publisher: [Read original article](<https://radek.io/posts/dependency-inversion-principle/>)

Published: 2011-08-10T00:00:00Z

Content type: article

Language: en

Sources: [Radek Pazdera](<https://devfeed.tech/sources/radek-pazdera.md>)

Topics: [Dependency Inversion](<https://devfeed.tech/topics/dependency-inversion.md>), [abstraction](<https://devfeed.tech/topics/abstraction.md>), [interface](<https://devfeed.tech/topics/interface.md>), [object](<https://devfeed.tech/topics/object.md>), [modules](<https://devfeed.tech/topics/modules.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [abstraction](<https://devfeed.tech/tags/abstraction.md>), [dependency-inversion](<https://devfeed.tech/tags/dependency-inversion.md>), [dependency-inversion-principle](<https://devfeed.tech/tags/dependency-inversion-principle.md>), [interface](<https://devfeed.tech/tags/interface.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [software](<https://devfeed.tech/tags/software.md>), [solid](<https://devfeed.tech/tags/solid.md>)

### AI overview

The article explains the Dependency Inversion Principle, the D in SOLID, for object-oriented software design. It argues that high-level and low-level modules should depend on abstractions, while details should depend on those abstractions, improving module reuse and reducing direct coupling.

### Source excerpt

SOLID Object-Oriented Design

## Dependency Injection with constructors?

DevFeed: [Dependency Injection with constructors?](<https://devfeed.tech/articles/dependency-injection-with-constructors-31953.md>)

Original publisher: [Read original article](<https://tech.finn.no2011/05/12/dependency-injection-with-constructors/>)

Author: mick

Published: 2011-05-12T23:01:00Z

Content type: opinion

Language: en

Sources: [Finn.no](<https://devfeed.tech/sources/finn-no.md>)

Topics: [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [Dependency Inversion](<https://devfeed.tech/topics/dependency-inversion.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>)

Tags: [constructor](<https://devfeed.tech/tags/constructor.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [dependency-inversion](<https://devfeed.tech/tags/dependency-inversion.md>), [framework](<https://devfeed.tech/tags/framework.md>), [immutability](<https://devfeed.tech/tags/immutability.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [polymorphism](<https://devfeed.tech/tags/polymorphism.md>)

### AI overview

The article examines constructor injection compared with setter, field, and interface injection. It argues that constructor injection makes dependencies explicit, supports safer construction and immutability, and exposes application complexity, while noting cases where setter injection remains useful.

### Source excerpt

The debate whether to use constructors, setters, fields, or interfaces for dependency injection is often heated and opinionated. Should you have a preference? The argument for Constructor Injection We had a consultant working with us reminding us to take a preference towards Constructor injection. Indeed we had a large code base using predominantly setter injection because in the past that is what the Spring community recommended. The arguments for constructor injection goes like: Dependencies are declared public, providing clarity in the wiring of Dependency Inversion, Safe construction, what must be initialised must be called, Immutability, fields can be declared final, and Clear indication of complexity through numbers of constructor parameters. And that Setter injection can be used when needed for cyclic dependencies, optional and re-assignable dependencies, to support multiple/complicated variations of construction, or to free up the constructor for polymorphism purposes. Being a big fan of Inversion of Control but not overly of Dependency Injection frameworks something smelt wrong to me. Yet solely within the debate of constructor versus setter injection i don't disagree that constructor injection has the advantage. Having been using Spring's dependency injection through annotation a little recently and building a favouritism towards field injection I was happy to get the chance to ponder it over, to learn and to be taught new things. What was it i was missing? Is there a bigger picture? API vs Implementation If there is a bigger picture it has to be around the Dependency Inversion argument since this is known to be potentially complex. The point here of using constructor injection is that 1) through a public declaration and injection of dependencies we build an explicit graph showing the dependency inversion throughout the application, and 2) even if the application is wired magically by a framework such injection must still be done in the same way without th