Junior — Middle
Explain the differences between inversion of control and dependency injection in software development.
sobes.tech AI
Answer from AI
Inversion of Control (IoC) is a design principle where the control of creating and binding objects is delegated to an external container or framework, rather than the objects themselves. This reduces component coupling and increases flexibility.
Dependency Injection (DI) is a specific implementation of IoC, where an object's dependencies are provided from outside (e.g., through constructors, setters, or interfaces), rather than being created inside the object.
In simpler terms:
- IoC is a general principle that changes the direction of control.
- DI is a way to implement IoC by providing objects with their dependencies from outside.
Example in Java with DI via constructor:
class Engine {
void start() { /* ... */ }
}
class Car {
private Engine engine;
// Dependency injection via constructor
public Car(Engine engine) {
this.engine = engine;
}
void drive() {
engine.start();
// ...
}
}
// External code creates dependencies and passes them
Engine engine = new Engine();
Car car = new Car(engine);
Here, Car does not create Engine itself but receives it from outside, which facilitates testing and modification.