8000 GitHub - agustinjosew/DI_vs_DIP: Dependy Injection versus Dependency Inversion Principle
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

agustinjosew/DI_vs_DIP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

DI_vs_DIP

Dependy Injection versus Dependency Inversion Principle

Dependency Inversion (DIP) and Dependency Injection (DI) are related but distinct concepts within object-oriented programming and software design, which often they get confused. Let's look at each of them and what SOLID principles they correspond to:

Dependency Inversion (DIP)

  • Principle: DIP is one of the five SOLID principles, specifically the "D" in SOLID.
  • Concept: DIP refers to a method of decoupling software modules. This principle states that:
    • High-level modules should not depend on low-level modules. Both should depend on abstractions (e.g., interfaces or abstract classes).
    • Abstractions should not depend on details. The details (concrete implementations) must depend on the abstractions.
  • Purpose: The goal is to reduce direct dependency between software components, so that changes to a low-level module do not affect high-level modules, making the system more maintainable and scalable.

Dependency Injection (DI)

  • Mechanism: DI is a design pattern that implements DIP.
  • Concept: DI is a technique to achieve inversion of control (a broader concept) between classes and their dependencies. A class should not instantiate its dependencies directly. Instead, dependencies are "injected" into the class, usually through the constructor, a setter method, or directly into the field.
  • Purpose: DI allows a class to be more independent of how its dependencies are created. This improves the modularity of the software and makes it easier to test classes in isolation (with mocks or stubs).

Why are they confused?

  • Related Terminology: DI is a way of doing DIP, so they are related and it is easy to confuse the pattern with the principle.
  • Both Deal with Dependencies: Both concepts deal with managing dependencies in software design, which can lead to confusion.
  • Principle vs. Implementation: DIP is a high-level design principle, while DI is a practical implementation technique. In technical discussions, it is common to focus on how something is coded (DI), which can overshadow why it is done that way (DIP).

During a technical interview, to avoid confusion, you can focus on the following points:

  • DIP is about the structure and design of the code to reduce coupling.
  • DI is a concrete technique for injecting dependencies into a class, allowing that class to not have to worry about how to create its dependencies.

Understanding and being able to explain both concepts with clear examples will demonstrate a deep understanding of software design principles and patterns.

About

Dependy Injection versus Dependency Inversion Principle

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

0