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 (2)

Label Occurrences
Dependency Inversion Principle canonical 7
Dependency Inversion 1

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 (8)

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 ⓘ
SOLID principles → consistsOf → Dependency Inversion Principle ⓘ
Interface Segregation Principle → relatedTo → Dependency Inversion Principle ⓘ
DIP → fullName → Dependency Inversion Principle ⓘ
DIP → abbreviationOf → Dependency Inversion Principle ⓘ
DIP → alsoKnownAs → Dependency Inversion ⓘ
linked to: Dependency Inversion Principle