Files
java-design-patterns/localization/es/dependency-injection
Luis Mateo Hincapié Martinez dc7495e8bd translation: Translated all creational patterns category to Spanish (Task of issue #2277) (#2813)
* Typo corrections

* bridge pattern translated to spanish

* builder pattern translated to spanish

* context-object pattern translated to spanish

* converter pattern translated to spanish

* dependency injection pattern translated to spanish

* factory pattern translated to spanish

* factory-kit pattern translated to spanish

* factory-method pattern translated to spanish

* monostate pattern translated to spanish

* multiton pattern translated to spanish

* object mother pattern translated to spanish

* object pool pattern translated to spanish

* property pattern translated to spanish

* prototype pattern translated to spanish

* registry pattern translated to spanish

* step builder pattern translated to spanish

* value object pattern translated to spanish

* typo corrections and resources urls refactor

* grammar corrections

* Add image to each pattern

---------

Co-authored-by: luismateoh <luismateohm@gmail.com>
Co-authored-by: luis.hincapie <luis.hincapie@blankfactor.com>
2024-03-23 11:53:54 +02:00
..

title, category, language, tag
title category language tag
Dependency Injection Creational es
Decoupling

Propósito

La inyección de dependencias es un patrón de diseño de software en el que una o más dependencias (o servicios) se inyectan, o se pasan por referencia, a un objeto dependiente (o cliente) y pasan a formar parte del estado del cliente. El patrón separa la creación de las dependencias de un cliente de su propio comportamiento, lo que permite que los diseños de los programas estén poco acoplados y sigan los principios de inversión de control y responsabilidad única.

Explicación

Ejemplo del mundo real

Al viejo mago le gusta llenar su pipa y fumar tabaco de vez en cuando. Sin embargo, no quiere depender de una sola marca de tabaco, sino que le gusta poder disfrutar de todas ellas de manera intercambiable.

En palabras sencillas

La Inyección de Dependencias separa la creación de las dependencias del cliente de su propio comportamiento.

Wikipedia dice

En ingeniería de software, la inyección de dependencias es una técnica en la que un objeto recibe otros objetos de los que depende. Estos otros objetos se llaman dependencias.

Ejemplo programático

Presentemos primero la interfaz tabaco Tobacco y las marcas concretas.

@Slf4j
public abstract class Tobacco {

  public void smoke(Wizard wizard) {
    LOGGER.info("{} smoking {}", wizard.getClass().getSimpleName(),
        this.getClass().getSimpleName());
  }
}

public class SecondBreakfastTobacco extends Tobacco {
}

public class RivendellTobacco extends Tobacco {
}

public class OldTobyTobacco extends Tobacco {
}

A continuación se muestra la interfaz Wizard y su implementación.

public interface Wizard {

  void smoke();
}

public class AdvancedWizard implements Wizard {

  private final Tobacco tobacco;

  public AdvancedWizard(Tobacco tobacco) {
    this.tobacco = tobacco;
  }

  @Override
  public void smoke() {
    tobacco.smoke(this);
  }
}

Y por último podemos demostrar lo fácil que es darle al viejo mago cualquier marca de tabaco Tobacco.

    var advancedWizard = new AdvancedWizard(new SecondBreakfastTobacco());
    advancedWizard.smoke();

Diagrama de Clases

alt text

Aplicabilidad

Utilice el patrón de Inyección de Dependencia cuando:

  • Cuando necesites eliminar el conocimiento de la implementación concreta del objeto.
  • Para permitir pruebas unitarias de clases de forma aislada utilizando objetos simulados o stubs.

Créditos