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.

Jump to: Statements Referenced by

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.