Inversión del control
El principio de Inversión del Control (IoC, por sus siglas en inglés) se refiere a la forma en que los objetos obtienen sus dependencias. En lugar de que un objeto cree sus dependencias por sí mismo, las dependencias son pasadas a él. Esto permite un mayor control y flexibilidad en el sistema, ya que las dependencias pueden ser cambiadas o inyectadas en tiempo de ejecución.
Ejemplos en Java:
-
Un ejemplo común es el uso de un contenedor de inyección de dependencias (DI, por sus siglas en inglés) como Spring. En lugar de que las clases creen sus dependencias por sí mismas, las dependencias son pasadas a través de la configuración del contenedor.
-
Otro ejemplo es el uso de una clase abstracta para inyectar dependencias. En lugar de que las clases creen sus dependencias por sí mismas, las dependencias son pasadas a través de la implementación de la clase abstracta.
-
Un último ejemplo es el uso de una interfaz para inyectar dependencias. En lugar de que las clases creen sus dependencias por sí mismas, las dependencias son pasadas a través de la implementación de la interfaz.
Aquí te dejo un ejemplo en Java que ilustra el uso del principio de Inversión del Control. En este ejemplo se tiene una clase Motor, una clase Automóvil, y una clase ControladorMotor.
class Motor {
public void start() {
System.out.println("Iniciando motor");
}
}
class Automobile {
private Motor motor;
public Automobile(Motor motor) {
this.motor = motor;
}
public void start() {
motor.start();
}
}
class ControladorMotor {
public static void main(String[] args) {
Motor motor = new Motor();
Automobile automobile = new Automobile(motor);
automobile.start();
}
}
En este ejemplo, la clase ControladorMotor es la que se encarga de crear una instancia de Motor y pasarla a la clase Automobile, en lugar de tener la clase Automobile crear la dependencia por si misma. Esto permite tener un mayor control sobre la creación de objetos y las dependencias entre ellos, lo cual facilita la inyección de dependencias en tiempo de ejecución.
https://blog.auriboxtraining.com/java/introduccion-la-ioc/
https://www.oscarblancarteblog.com/2016/12/01/concepto-inversion-of-control/