Inversion of Control
E811522
Inversion of Control is a software design principle where the flow of control is delegated from custom code to a framework or container, enabling more modular, testable, and loosely coupled systems.
Statements (49)
| Predicate | Object |
|---|---|
| instanceOf |
architectural principle
ⓘ
software design principle ⓘ |
| alsoKnownAs | IoC NERFINISHED ⓘ |
| category |
design principles
ⓘ
software architecture ⓘ software engineering ⓘ |
| changes | flow of control in a program ⓘ |
| commonIn |
.NET frameworks
NERFINISHED
ⓘ
Java frameworks ⓘ JavaScript frameworks ⓘ |
| contrastsWith | traditional procedural control flow ⓘ |
| decouples |
application logic from infrastructure concerns
ⓘ
object creation from object usage ⓘ |
| delegatesControlTo |
container
ⓘ
framework ⓘ |
| enables |
easier unit testing
ⓘ
loose coupling ⓘ mocking of dependencies ⓘ plug-in architectures ⓘ separation of configuration from use ⓘ |
| exampleFramework |
.NET Core dependency injection container
ⓘ
Angular NERFINISHED ⓘ Inversion of Control containers (IoC containers) ⓘ Spring Framework NERFINISHED ⓘ |
| followsPrinciple | Don’t call us, we’ll call you ⓘ |
| hasGoal |
improve flexibility of software systems
ⓘ
improve maintainability ⓘ improve modularity ⓘ improve testability ⓘ reduce coupling between components ⓘ |
| helpsWith |
reusing components across applications
ⓘ
substituting implementations at runtime ⓘ testing components in isolation ⓘ |
| implementedBy |
dependency injection containers
ⓘ
service locator containers ⓘ |
| promotes |
configuration-driven behavior
ⓘ
interface-based design ⓘ late binding of dependencies ⓘ |
| relatedConcept |
Dependency Injection
NERFINISHED
ⓘ
Hollywood Principle NERFINISHED ⓘ Service Locator pattern NERFINISHED ⓘ |
| supports |
configuration via annotations
ⓘ
configuration via code ⓘ configuration via metadata ⓘ |
| usedIn |
component-based systems
ⓘ
enterprise application frameworks ⓘ object-oriented programming ⓘ plugin systems ⓘ web application frameworks ⓘ |
Referenced by (1)
Full triples — surface form annotated when it differs from this entity's canonical label.