Inversión de control

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 26 de mayo de 2021; las comprobaciones requieren 2 ediciones .

La inversión de control (  IoC ) es un importante principio de programación orientada a objetos que se utiliza para reducir el acoplamiento (coupling) en programas informáticos [1] . También es una solución de integración arquitectónica que simplifica la expansión de las capacidades del sistema, en el que el marco de trabajo controla el flujo de control del programa [2] .

En un programa normal, el programador decide en qué orden hacer las llamadas a procedimientos. Pero si se usa un marco , el programador puede colocar su código en ciertos puntos de ejecución (usando devoluciones de llamada u otros mecanismos), luego ejecutar la "función principal" del marco que manejará toda la ejecución y llamará al código del programador cuando sea necesario. Como resultado, hay una pérdida de control sobre la ejecución del código; esto se denomina inversión de control (el marco controla el código del programador y no el programador controla el marco).

La inversión de control ocurre no solo en marcos, sino también en algunas bibliotecas (pero generalmente las bibliotecas no crean inversión de control; proporcionan un conjunto de funciones que el programador debe llamar).

Descripción

Una implementación de la inversión de control aplicada a la gestión de dependencias es la inyección de dependencias [ 2 ] [ 3] .  La inyección de dependencia se usa en muchos marcos llamados contenedores IoC.

En comparación con las tecnologías de nivel inferior, un contenedor IoC es un enlazador que no recopila archivos de objetos , sino objetos OOP ( instancias de clase ) durante la ejecución del programa . Obviamente, para implementar tal idea, era necesario crear no solo el propio enlazador, sino también una fábrica que produce objetos. Un análogo de dicho enlazador (por supuesto, más funcional) es un compilador , una de cuyas funciones es la creación de archivos de objetos. La idea de vincular un programa en tiempo de ejecución no es nada nuevo. Proporcionar al programador herramientas de inyección de dependencia ha proporcionado mucha más flexibilidad en el desarrollo y comodidad en la prueba del código [4] .

Métodos de implementación

Crítica

Todos los enfoques basados ​​en la inversión del control adolecen de las siguientes dos desventajas [5] :

Notas

  1. Inversión de Control con el Marco de Extensibilidad Administrada (MEF) . Consultado el 6 de octubre de 2016. Archivado desde el original el 4 de enero de 2017.
  2. 12 Yang , 2012 .
  3. Robert C. Martín. Código limpio: un manual de artesanía de software ágil. - Pearson Education, 2008. - Pág. 157. - ISBN 978-0-13-608325-2 .
  4. Martín Fowler. Inversión de Contenedores de Control y el patrón de Inyección de Dependencia . Consultado el 6 de octubre de 2016. Archivado desde el original el 30 de mayo de 2020.
  5. Agha, G. e Igarashi, A. y Kobayashi, N. y Masuhara, H. y Matsuoka, S. y Shibayama, E. y Taura, K. Objetos concurrentes y más allá: artículos dedicados a Akinori Yonezawa con motivo de su 65 cumpleaños. - Springer Berlín Heidelberg, 2014. - Pág. 433. - ISBN 9783662444719 .

Literatura

Enlaces