Inversión de Control
Inversión de Control es un principio de programación que invierte el flujo de control de una aplicación.
En la lógica de programación procedimental, el código que ejecuta la ejecución de un programa (la función main), instancia objetos, llama métodos e incluso pide al usuario que ingrese información para que la ejecución pueda continuar y el programa cumpla su objetivo.
Con la Inversión de Control, un framework crea las instancias de una clase, llama a los métodos y dispara las acciones de usuario, teniendo control total del flujo, removiendo esta responsabilidad de la función main.
De esta forma, el framework llama a la aplicación, en lugar de ser esta última quien llame al framework.
Inyección de Dependencias
Inyección de Dependencias es una técnica en la cual, la creación y conexión de dependencias se hace fuera de la clase dependiente. De esta manera, en lugar de que la clase cliente tenga que crear y configurar todas sus dependencias internamente (lo cual crea acoplamiento innecesario), se le proveen sus dependencias ya instanciadas y listas para ser utilizadas (de ahí el término de "inyección").
La inyección de dependencias puede alcanzarse de tres maneras:
- Inyección por constructor: Se pasan las dependencias durante el tiempo de inicialización de la clase.
- Inyección por interfaz: Se pasan las dependencias a través de un método de la clase cliente, tiempo después de la inicialización.
- Inyección por atributo público: Se pasan las dependencias a través de atributos públicos en la clase cliente.
Inversión de Dependencias
Dado un módulo A (cliente), que depende de un módulo B (servidor); un cambio en B provocará que A tenga que ser recompilado. Según el principio de Inversión de Dependencias, debe definirse una interfaz IB en el módulo A, de modo que B sea la implementación de dicha interfaz. Luego, cualquier cambio en B, no implicará una recompilación de A, siempre que la interfaz IB no cambie. Si tanto el cliente (A), como el servidor (B) dependen de una abstracción, no importará cuál sea la implementación.
Top comments (0)