Diferencia entre revisiones de «Inversión de control»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
Gatm50 (discusión · contribs.)
m Revertidos los cambios de Gatm50 a la última edición de Pablorobayo
Línea 32: Línea 32:
* [http://martinfowler.com/articles/injection.html Inversion of Control Containers and the Dependency Injection pattern] - [[Martin Fowler]]
* [http://martinfowler.com/articles/injection.html Inversion of Control Containers and the Dependency Injection pattern] - [[Martin Fowler]]
* [http://www.hachisvertas.net/jcs/wiki/index.php?title=Inversi%C3%B3n_de_Control Inversión de Control en Lyckapedia]
* [http://www.hachisvertas.net/jcs/wiki/index.php?title=Inversi%C3%B3n_de_Control Inversión de Control en Lyckapedia]
* [http://cup-coffe.blogspot.com/2010/04/inversion-de-control-ioc-y-contenedor.html Inversión de Control ( IoC ) y Contenedor IoC]


[[Categoría:Paradigmas de programación]]
[[Categoría:Paradigmas de programación]]

Revisión del 21:11 7 abr 2010

Inversión de control (Inversion of Control en inglés, IoC) es un método de programación en el que el flujo de ejecución de un programa se invierte respecto a los métodos de programación tradicionales, en los que la interacción se expresa de forma imperativa haciendo llamadas a procedimientos (procedure calls) o funciones. Tradicionalmente el programador especifica la secuencia de decisiones y procedimientos que pueden darse durante el ciclo de vida de un programa mediante llamadas a funciones. En su lugar, en la inversión de control se especifican respuestas deseadas a sucesos o solicitudes de datos concretas, dejando que algún tipo de entidad o arquitectura externa lleve a cabo las acciones de control que se requieran en el orden necesario y para el conjunto de sucesos que tengan que ocurrir.

En cierto modo es una implementación del Principio de Hollywood, una metodología de diseño de software, cuyo nombre proviene de las típicas respuestas que se les dan a los actores amateurs en las audiciones que tienen lugar en la meca del cine [1]: no nos llames; nosotros te llamaremos.

Es el principio subyacente a la técnica de Inyección de Dependencias, siendo términos frecuentemente confundidos.

Historia

En los comienzos de la programación, los programas eran lineales y monolíticos. El flujo de ejecución era simple y predecible, ejecutándose línea tras línea.

Aparecieron dos conceptos que revolucionaron la programación: la modularidad y la reutilización de los componentes: se crean bibliotecas de componentes reutilizables. El flujo se complica, saltando de componente a componente, y aparece un nuevo problema: la dependencia (acoplamiento) entre nuestros componentes.

El problema se empieza a considerar lo suficientemente importante como para definir nuevos conceptos en el diseño :

  • Inversión de Control (IoC)
  • Inyección de Dependencias (Dependency Injection, DI)

Definición

El flujo habitual se da cuando es el código del usuario quien invoca a un procedimiento de una biblioteca.

La inversión de control sucede cuando es la biblioteca la que invoca el código del usuario.

Típicamente sucede cuando la biblioteca es la que implementa las estructuras de alto nivel y es el código del usuario el que implementa las tareas de bajo nivel.

La utilización de interfaces y la aparición de los frameworks ha popularizado este término. De hecho es el concepto central del Framework de Spring, ya que implementa un "Contenedor" que se encarga de gestionar las instancias (así como sus creaciones y destrucciones) de los objetos del usuario. Por tanto las aplicaciones que utilicen el framework de Spring (no Spring propiamente dicho) utilizarán Inversión de Control.

Véase también

Enlaces externos