Skip to main content
Share Your Experience: Take the 2024 Developer Survey

Questions tagged [dependency-inversion]

Dependency inversion refers to a specific form of decoupling software modules. The principle is that high level modules and low level modules should depend on abstractions, and abstractions shall not depend on implementation details. Not to be confused with dependency injection which is a special form of dependency inversion.

Filter by
Sorted by
Tagged with
19 votes
5 answers
4k views

What is the meaning of "inversion" in Dependency Inversion design principle?

I'm reading about design patterns. I know what this principle does. High-level and low-level classes depend on abstractions. But why we say this is inversion?
Milad Khajavi's user avatar
17 votes
1 answer
6k views

How is Inversion of Control related to Dependency Inversion

In many articles all over the web the terms Inversion of Control and Dependency Inversion Principle seem to be mixed up and used as synonyms (further confusion is enforced by the tools that are called ...
Andre Borges's user avatar
  • 1,534
14 votes
5 answers
19k views

How to avoid bidirectional class and module dependencies

To give some context, I'm using python. We have the following package structure: /package_name /request.py # defines class Request /response.py # defines class Response Let also assume ...
Elrond's user avatar
  • 301
11 votes
3 answers
7k views

Clean Architecture Gateway layer depends on outer layer

Looking at the clean architecture layers and flow diagrams, and implemented it my self in my applications, I've always wondered which layer is supposed to contain the DB, or any 3rd Party service or ...
oren's user avatar
  • 297
9 votes
4 answers
4k views

Is dependency inversion principle necessary?

I've read a lot about dependency inversion principle but still, I can't apply it to my case. I just don't know when I should apply it and when not. I write a simple application in Java to generate ...
Awerde's user avatar
  • 327
9 votes
2 answers
828 views

I'm struggling to see how dependency inversion doesn't lead to tighter coupling in lower level modules and less reuseability

I'm refactoring a project I did for my work and I'm trying to apply the SOLID principles to make the architecture cleaner. I've run into an issue with the Dependency Inversion Principle that I can't ...
Ryan Mullin's user avatar
6 votes
6 answers
3k views

Coding to Interfaces vs Abstract Inheritance

Inheritance vs coding to an interface is something I have wondered with respect to proper architecture design but actually have not run into an problems when using abstract inheritance over coding to ...
G.T.D.'s user avatar
  • 508
6 votes
1 answer
2k views

Is there really such a thing as the onion architecture?

Note: BLL = Business Logic Layer (can also mean your domain) I'm trying to understand the onion architecture. It seems to me that it's actually the same thing as the layered architecture, only with ...
Bob Horn's user avatar
  • 2,337
6 votes
1 answer
2k views

When should interface be owned by client?

In Agile Software Development: Principles, Patterns, and Practices, Uncle Bob talks about client owning the service interface. My questions are : Should client always own the interface or only when ...
q126y's user avatar
  • 1,713
6 votes
2 answers
503 views

Why do I need dependency injection and the depencency inversion principal in my case?

I'm a student of best practices, architectural patterns, and design principals. I have been studying dependency injection and inversion of control a lot lately, and have been "drinking the koolade" ...
rory.ap's user avatar
  • 889
6 votes
2 answers
593 views

Is it good design to have one constructor that supplies a "default" concrete class to another that takes an abstraction?

I like to invert dependencies whenever possible by depending mostly on abstraction and allowing the concrete implementations to be passed into the object by clients, or a factory. I've found this to ...
Ryan Palmer's user avatar
5 votes
4 answers
2k views

Dependency Inversion Principle and Hollywood analogy

Often DIP is known as the Hollywood principle: "Don't call us, we'll call you.". But doesn't always higher level module calls lower level module, whether there is dependency inversion or not? Then ...
q126y's user avatar
  • 1,713
5 votes
2 answers
285 views

Help with dependency inversion

I'm learning about Binary Trees in school and I'm trying to apply the SOLID principles to it. My problem is in my BinaryTree::insert() method I'm creating a new BinaryNode, and from what I've ...
user644361's user avatar
5 votes
1 answer
1k views

Why support cyclic dependencies at all? Are there valid use cases?

Background Time ago I learnt something about package design, in particular about loose coupling: The Acyclic Dependencies Principle The dependency structure between packages must be a ...
laconbass's user avatar
  • 161
5 votes
1 answer
415 views

Choosing between Dependency Inversion and Dependency "Delegation" to a third module

Suppose I have MasterPackage containing a Master class, and BlasterPackage containing Blaster class. Since Master needs a Blaster to work, the higher level MasterPackage depends directly on lower-...
heltonbiker's user avatar
  • 1,048
5 votes
2 answers
311 views

How to maintain Dependency Inversion Principle with enums & custom types?

From what I understand two components A and B should only communicate with one another via an interface. Ideally this interface should be in its own separate assembly so that the client need not be ...
user4779's user avatar
  • 929
4 votes
3 answers
1k views

Dependency Inversion principle and high-level module reuse

If I got it right, the Dependency Inversion principle says that high level modules should use interfaces to the low level modules and low level modules should implement these interfaces. The purpose ...
Alan Evangelista's user avatar
4 votes
1 answer
3k views

How do I implement Dependency Inversion in C?

I'm a firmware developer and I'm interested in applying the SOLID practice in low level programming especially in Hardware Abstraction Layers in ARM microcontrollers. Every example I come across on ...
MrBit's user avatar
  • 233
4 votes
4 answers
2k views

Do we really need interface classes for the dependency inversion principle?

As a practical example, imagine a Gripper class which represents a robotic gripper in a simulation. Gripper has a TryGrip method, which checks if there's a GrippableItem in the correct position (...
Unimportant's user avatar
3 votes
2 answers
5k views

Depend on DDD Entities or Interfaces?

My understanding is that the dependency inversion principle does not apply to entities, because entities basically are your application - it generally doesn't make sense to swap out a different ...
Sarov's user avatar
  • 403
3 votes
3 answers
930 views

How to handle common functionality that is not business logic in clean architecture

The dependency rule in Clean Architecture states that: ... that source code dependencies can only point inwards. I now came across a problem that I cannot figure out myself. Lets assume I have a ...
JDurstberger's user avatar
3 votes
1 answer
507 views

How Dependency inversion is an extension of OCP?

I am reading about SOLID principles and have just read that Dependency Inversion (DI, to be distinguished here from Dependency injection, which is one way of achieving the inversion) is an extension ...
Ezoela Vacca's user avatar
3 votes
3 answers
1k views

Clarification on the Dependency Inversion Principle

I'm reading the book "Agile Software Development, Principles, Patterns, and Practices" by Robert C. Martin. When he talks about the Dependency Inversion Principle he gives the following example of a ...
Melvin Koopmans's user avatar
3 votes
2 answers
2k views

Clean Architecture and Persistence Annotations

If one wants to comply with the clean architecture principle 100%, they must not annotate the entities in the entities layer with database-specific annotations (like Hibernate, Neo4j, etc.). So, two ...
Shayan's user avatar
  • 199
3 votes
3 answers
1k views

How to decouple chain hierarchy project dependency by dependency injection? (C# .Net Standard)

I'm working on decoupling a Xamarin (.NetStandard) solution. It was using DryIOC container but I didn't see the IOC structure from the dependency, as the projects are still tightly coupled. Three main ...
Shaw's user avatar
  • 133
3 votes
0 answers
98 views

How to structure python modules/packages according to dependecy inversion

If I am working on a project, say it has this file structure: car/ body/ __init__.py doors.py bonnet.py engine/ cyclinderhead/ __init__.py pistons.py ...
run_the_race's user avatar
2 votes
4 answers
230 views

Is Implementation class exposure fine in Dependency Inversion

Basically we should depend on abstractions instead of concrete classes, that's the Dependency Inversion main principle. interface ITest { void DoSomething(); } class TestImpl : ITest { ...
John Peter's user avatar
2 votes
2 answers
320 views

Is it okay to use Dependency injection only because of unit testing?

I have a class that has dependencies that I know are not going to change. class ConversationFinder { public function __construct( protected Conversation $conversationDbFinder = new ...
Ghassan Barghouti's user avatar
2 votes
3 answers
395 views

Is there any redundancy within the scope of SOLID principles?

I have read in an article DIP in the Wild that "When Robert Martin first discussed the DIP, he equated it a first-class combination of the Open Closed Principle and the Liskov Substitution ...
bridgemnc's user avatar
  • 241
2 votes
2 answers
729 views

Dependency Injection and DI Container

I have implemented clean architecture for my app, and I have a few questions. Typically, pure DI is argued for over a Service Locator pattern, because it is very explicit and more testable. However, ...
Lansana's user avatar
  • 129
2 votes
2 answers
812 views

3 layer architecture In DI based software

I'm building software with 3 layer architecture and asp.net core , as you know the Dependency Injection is Built Into Asp.net core As i know the 3 layer architecture diagram is like this: ...
Mohammad Ansari's user avatar
2 votes
1 answer
124 views

Wrapping a legacy project in a test framework

I am working on wrapping an old project written in C# in a test framework. The largest problem I have is that I have a bunch of classes that are all VERY tightly coupled with other classes. All of ...
dartimien's user avatar
2 votes
1 answer
832 views

Protecting Invariants of Classes

I have a bit of a storm in a teacup at work, and I'm trying to figure out if I'm in the right, in the wrong or maybe a little bit of both. It all started out innocently enough; a developer from ...
Stephen Byrne's user avatar
2 votes
2 answers
370 views

Approaches to Dependency Inversion: DIC vs passing through constructor parameters

In previous applications I've worked on, I've had a single factory class which built my object structure, and all dependencies were passed to each class through its constructor parameters. I'm now ...
Nathan Arthur's user avatar
2 votes
1 answer
165 views

Application of Dependency Inversion Principle

Not a new programmer but new to architecture design. I'm about halfway through "Clean Architecture" by Robert C. Martin and I've realized that few components in my program need to have their ...
zwaller's user avatar
  • 31
2 votes
2 answers
1k views

Dependency inversion vs repository pattern (app layer dependency on ORM)

Let's say we have an application layer with some command handler and we use an Entity Framework database context/ORM context in that handler. I would invert dependencies from the Entity Framework/...
Viking's user avatar
  • 123
2 votes
3 answers
1k views

Dependency Inversion Principle - No deriving from concrete classes?

I'm not sure if I am getting this right. In order to observe proper SOLID principles, am I forbidden to inherit from concrete classes? Does that mean that every concrete class that I have more or less ...
Tyress's user avatar
  • 153
2 votes
2 answers
245 views

Composition vs Aggregation: is this a "hidden my dependencies" case?

I have been thinking about this for a while and could not get to a conclusion. I need to convert a object to another (that will end up serialized as XML). Both objects have many fields, let's have an ...
Marcos Vinícius da Silva's user avatar
2 votes
2 answers
912 views

Migrating legacy code with singletons to Dependency injection

I'm working on a larger, older project. Our code is littered with classical singletons, i.e. classes like public class ABCService { private static final instance = new ABCService(); public ...
Johannes Hahn's user avatar
1 vote
2 answers
218 views

Testable design for a class that can only be instantiated through a static method

I'm attempting to design a class that is to be instantiated through the use of a static method, something like newInstance(param1, param2). The reason behind this is that 2 of the 4 parameters it ...
Christopher Francisco's user avatar
1 vote
1 answer
158 views

Can DI without the dependency inversion be replaced by protected properties?

Many people come from frameworks that implement Dependency Injection and IoC containers for everything (in my case Angular 2+), so, this group of people will try to use dependency injection and IoC ...
Vitor Figueredo Marques's user avatar
1 vote
3 answers
433 views

Dependency Inversion Principle and Lower-Level Code Reuse

I am wondering about how to make lower-level code reusable when the Dependency Inversion Principle (DIP) is used. In the book Clean Architecture by Robert C. Martin, the DIP is described such that ...
tgpfeiffer's user avatar
1 vote
1 answer
139 views

Should a function implementer or function caller handle immutability

I know there is no right and wrong answer here, I'm just looking for other opinions on who should handle immutability, dependency inversion and decoupling. Example 1: Here each function caller has ...
Stefanos Chrs's user avatar
1 vote
2 answers
547 views

Dependency Injection - Return Types

I am confused about Dependency Inversion in general. Lets's say we have 2 layers: Layer0 the low level layer, and Layer1 the high level layer. Layer1 should define the abstract interface, and Layer0 ...
Icebraker's user avatar
1 vote
2 answers
2k views

Default value for constructor dependency injection

I have class A that depends on interfaces B & C. I use constructor injection to inject them into A: class A { let b: B let c: C init(b: B, c: C) { self.b = b self....
RodYt's user avatar
  • 69
1 vote
2 answers
348 views

Should a BDD feature be implemented by a one (and only one) clean architecture interactor?

TL; DR Given BDD documentation with features composed by several scenarios, should we: Create a single interactor per feature Create minor interactors per scenario, and composing the feature ...
JP Ventura's user avatar
1 vote
3 answers
528 views

Use just one parameter for all dependencies instead of many?

I understand that having 3 or more parameters as dependency is a sign that the class may be doing too many things, however there are cases that the class really needs more than 3. My question is, is ...
IMB's user avatar
  • 343
1 vote
2 answers
878 views

How to interpret Dependency Inversion Principle

I am working on trying to understand the SOLID object oriented design principles. I was able to get the "SOL" pretty easily, though "L" required some hand holding because I am bad at definitions. I ...
Jake's user avatar
  • 119
1 vote
1 answer
202 views

Dependency Inversion - Software Architecture

Let's say we have an application with a DAL, business layer, and presentation layer, we do dependency Inversion, and we place the database repository interfaces at the business layer. At the data ...
Icebraker's user avatar
1 vote
1 answer
93 views

Should I use dependency inversion in this case?

I have a Document class and a DocumentItem class. A document creates multiple DocumentItems. As my project has evolved, I realized that DocumentItem needed some "deep" logic to properly display, ...
Charlie Dalsass's user avatar