DIP
E811521
DIP is a key object-oriented design principle that promotes decoupling by having high-level modules depend on abstractions rather than concrete implementations.
Statements (48)
| Predicate | Object |
|---|---|
| instanceOf | object-oriented design principle ⓘ |
| abbreviationOf | Dependency Inversion Principle NERFINISHED ⓘ |
| aimsTo |
improve architectural robustness
ⓘ
separate policy from implementation details ⓘ |
| alsoKnownAs | Dependency Inversion NERFINISHED ⓘ |
| appliesTo |
high-level policy modules
ⓘ
low-level detail modules ⓘ |
| assumes | availability of stable abstractions ⓘ |
| category |
design principle
ⓘ
software engineering principle ⓘ |
| contrastsWith | direct dependency on concrete classes ⓘ |
| documentedIn |
Agile Software Development, Principles, Patterns, and Practices
NERFINISHED
ⓘ
Clean Architecture NERFINISHED ⓘ |
| enables | easier unit testing via mocking abstractions ⓘ |
| encourages |
programming to interfaces
ⓘ
use of abstractions ⓘ |
| fullName | Dependency Inversion Principle NERFINISHED ⓘ |
| oftenIllustratedWith |
layered architecture examples
ⓘ
plugin-based architectures ⓘ |
| originatedIn | object-oriented design literature ⓘ |
| partOf | SOLID principles NERFINISHED ⓘ |
| primaryGoal | decoupling high-level and low-level modules ⓘ |
| promotes |
flexibility
ⓘ
loose coupling ⓘ maintainability ⓘ modularity ⓘ testability ⓘ |
| proposedBy | Robert C. Martin NERFINISHED ⓘ |
| reduces |
coupling to concrete implementations
ⓘ
ripple effects of changes in low-level modules ⓘ |
| relatedTo |
Dependency Injection
ⓘ
Interface Segregation Principle NERFINISHED ⓘ Inversion of Control NERFINISHED ⓘ Open/Closed Principle NERFINISHED ⓘ Service Locator pattern NERFINISHED ⓘ |
| states |
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 ⓘ |
| supports |
hexagonal architecture
ⓘ
onion architecture ⓘ |
| typicalMechanism |
constructor injection
ⓘ
dependency injection containers ⓘ factory patterns ⓘ setter injection ⓘ |
| usedIn |
enterprise application design
ⓘ
object-oriented programming ⓘ software architecture ⓘ |
Referenced by (1)
Full triples — surface form annotated when it differs from this entity's canonical label.