Red de conocimiento informático - Conocimiento informático - Cómo entender la inyección de dependencia de Java de forma popular

Cómo entender la inyección de dependencia de Java de forma popular

Supongamos que escribe dos clases, una es Persona y la otra es Móvil.

A veces las personas necesitan usar sus teléfonos móviles para hacer llamadas y necesitan usar el método callUp de sus teléfonos móviles.

La forma tradicional de escribir es esta:

Código Java

Persona de clase pública{

MakeCall booleano público (número largo){

Móvil móvil=nuevo Móvil();

volver móvil.callUp(número);

}

}

En otras palabras, el método makeCall de la clase Persona depende de la clase Móvil, y se debe generar manualmente una nueva instancia new Mobile() antes de poder realizar trabajos posteriores.

La idea de la inyección de dependencia es que cuando una clase (Persona) tiene una dependencia de otra clase (Móvil), la clase dependiente (Móvil) ya no se instancia dentro de la clase (Persona). , configura un beans.xml antes para decirle al contenedor de qué clase (Móvil) depende. Al crear una instancia de la clase (Persona), el contenedor inyecta automáticamente una instancia de la clase dependiente (Móvil).

Interfaz:

Código Java

Interfaz pública MobileInterface{

llamada booleana pública (número largo);

}

Clase de persona:

Código Java

Clase pública Persona{

Interfaz móvil privada interfaz móvil;

makeCall booleano público (número largo){

return this.mobileInterface.callUp(número);

}

setMobileInterface público vacío (Interfaz móvil interfaz móvil){

this.mobileInterface=mobileInterface;

}

}

Configurar dependencias en archivos xml

Código Java

lt;bean id="persona" class="Persona"gt;

lt;property name="mobileInterface"gt;

lt;ref local =" mobileInterface"/gt;

lt;/propertygt;

lt;/beangt;

lt; bean id="mobileInterface" class="Móvil "/ gt;

De esta manera, cuando la clase Persona implementa realizar llamadas, no conoce la existencia de la clase Móvil. Solo sabe llamar a una interfaz MobileInterface, y la implementación específica de MobileInterface se completa a través de. la clase Móvil, y el contenedor la inyecta automáticamente cuando se usa, lo que reduce en gran medida la interdependencia entre diferentes clases.

Métodos de inyección de dependencias de Java: inyección de conjuntos, inyección de constructores, inyección de interfaces.