Dependency Inversion Principle

E232908

The Dependency Inversion Principle is an object-oriented design guideline that promotes decoupling by having high-level and low-level modules depend on shared abstractions rather than concrete implementations.

All labels observed (1)

Label Occurrences
Dependency Inversion Principle canonical 3

How this entity was disambiguated

Statements (47)

Predicate Object
instanceOf SOLID principle
software design principle
addresses difficulty in unit testing concrete implementations
rigid and fragile designs
tight coupling between modules
alsoKnownAs DIP
appliesTo high-level policy modules
low-level detail modules
benefit easier replacement of low-level components
improved ability to evolve system behavior
reduced ripple effects of changes
simplified mocking and stubbing in tests
contrastsWith direct instantiation of concrete classes
top-level modules depending on concrete details
coreIdea abstractions should not depend on details
both high-level and low-level modules should depend on abstractions
details should depend on abstractions
high-level modules should not depend on low-level modules
emphasizes decoupling of components
inversion of traditional dependency direction
use of interfaces and abstract classes
encourages depending on stable abstractions
programming to interfaces rather than implementations
separating policy from implementation details
field object-oriented design
software engineering
formulatedBy Robert C. Martin
goal improve flexibility of software design
improve maintainability
improve testability
increase modularity
reduce coupling between high-level and low-level modules
influences framework and library design
test-driven development practices
introducedInContextOf SOLID object-oriented design guidelines
partOf SOLID principles
relatedTo Inversion of Control
dependency injection
interface segregation
layered architecture
loose coupling
typicalMechanism constructor injection
interface-based design
setter injection
usedIn domain-driven design
enterprise application architectures
plugin-based architectures

How these facts were elicited

Referenced by (3)

Full triples — surface form annotated when it differs from this entity's canonical label.

Single Responsibility Principle relatedTo Dependency Inversion Principle
Open-Closed Principle relatedTo Dependency Inversion Principle