La inyección de dependencia es otro tema común entre los programadores orientados a objetos. En este tutorial, veremos la inyección de dependencias y por qué podría tener sentido hacer uso de ella. Ya hemos echado un vistazo a las clases básicas, los objetos, los captadores y los definidores, así como algunos conceptos básicos relacionados con la encapsulación y la herencia. Abordemos ahora una introducción suave a la inyección de dependencia y los mensajes de objetos.
No hay "yo" en el equipo
Pensemos en construir un equipo de fútbol que se enfrente al mundo en un evento autorizado por la FIFA. En este tipo de fútbol, hay muchos países diferentes que participan. Para que un País participe, dependerá de un equipo de jugadores. Cada equipo depende de tener suficientes jugadores para ser competitivo. Con esta idea, podemos construir algunas clases que sigan estos principios. Usando nuestro enfoque de búsqueda de sustantivos, nombremos algunas clases. Hasta ahora hemos hablado de a Country
, a Team
y a Player
. Convirtámoslos en clases.
Excelente. Ahora, por supuesto, estas clases están vacías, por lo que no vamos a destrozar exactamente el circuito de la FIFA, pero veamos si podemos cambiar eso. Pensemos en el Country
. A Country
necesitará a name
, como Estados Unidos, y dependerá de a Team
, para ser candidato a la Copa Mundial de la FIFA. Agreguemos esos elementos ahora.
Pasar un objeto como argumento
Lo que hacemos aquí es pasar dos argumentos a nuestro constructor. La primera es la dependencia , que hace uso de Type Hinting . Prefijamos la variable con el tipo de objeto del que deseamos depender . Esta es nuestra primera instancia de Dependency Injection y viene en forma de Constructor Injection . El segundo argumento es simplemente el name
de Country
, que se utilizará de forma predeterminada en EE. UU. Si no se proporciona ninguno. Ok, tenemos un Country
que depende de a Team
, pero nuestro actualTeam
la clase está vacía por lo que no será de mucho beneficio. Agreguemos algo de carne a nuestro equipo. ¿Qué necesita un equipo? Necesita algunos jugadores. ¿Cómo consigue jugadores? Bueno, necesitarían al join
equipo. También podríamos decir que dependemos de un jugador para unirse al equipo. Codifiquemos esto.
Primero, creamos una players
matriz para contener a todos nuestros jugadores. Cuando creamos un nuevo Team
, generaremos automáticamente una matriz de jugadores para contener a los jugadores que se unen al equipo. Hay una palabra clave ahí, únete. Un jugador deberá unirse al equipo. Creamos el join
método y pasamos un Player
objeto. Aquí de nuevo usamos sugerencias de tipo para indicar que esperamos un objeto de tipo Player
. Esta es nuestra segunda instancia de Inyección de dependencia , pero esta vez usamos la Inyección de método . Finalmente, simplemente creamos un método de obtención simple de getplayers()
para que podamos ver quién está en nuestro equipo a medida que agregamos jugadores. La Player
clase debería ser fácil ya que todo lo que tenemos que hacer es darle a nuestro jugador un name
.
En este punto estamos progresando, pero tenemos un pequeño problema. ¿Cómo se va a incorporar un jugador al equipo de un país específico? Lo más probable es que el país necesite recruit
un jugador para unirse a su equipo. Actualicemos la clase País para reflejar esto.
Enviando mensajes
Ahora nuestro Country
tiene la capacidad de recruit
nuevos jugadores para su Team
. Tenga en cuenta que este es un ejemplo de transmisión de mensajes . El nombre del método y sus parámetros de entrada se conceptualizan como un mensaje . Estamos listos para probar esto. Ahora sabemos que a Country
va a depender de a Team
. En otras palabras, cuando creamos un nuevo Country
, necesitamos pasar un Team
objeto. Entonces, primero, crearemos un Team
objeto, luego crearemos un Country
objeto y pasaremos esa instancia de Team
.
Perfecto. Ahora necesitamos recruit
algunos jugadores para nuestro Team
. Para ser recruit
un jugador, primero deben existir. Creemos un nuevo Player
ahora.
Ahora que tenemos una Player
, ¡nuestra Country
lata recruit
!
Confirmemos ahora quién está en nuestro Team
. Recuerde, creamos un getplayers()
captador en nuestra Team
clase para hacer precisamente eso por nosotros.
¡Increíble! Podemos ver que tenemos unPlayer
objeto con elname
de Carli Lloyd en nuestro equipo. Vamos a necesitar mucho más de un jugador para tener éxito, así que agreguemos un grupo de compañeros de equipo.
Bingo Bango -> ¡veamos quién está ahora en nuestro equipo!
¡Eso sí que es un equipo! Tenemos algunos jugadores fantásticos como Morgan Brian, Ashlyn Harris, Tobin Heath, Alex Morgan y Carli Lloyd.
Inyección de dependencia para principiantes
En este tutorial de inyección de dependencia para principiantes, cubrimos mucho terreno. En lugar de crear una clase masiva e intentar poner toda la funcionalidad en una ubicación, dividimos nuestra clase en varias clases diferentes. Aunque las clases están separadas, pueden comunicarse entre sí enviando mensajes o llamando a métodos entre sí. Enviar un mensaje puede considerarse como llamar a un método sobre un objeto. También tuvimos una introducción a Type Hinting y Dependency Injection. Estos son enfoques que permiten la composición, que es el concepto de objetos que contienen otros objetos en sus variables de instancia. Mediante el uso de Composición, podemos construir un objeto para cumplir con todos nuestros objetivos lógicos, cuando la herencia simple no es suficiente. Comprender la inyección de dependencia nos da una buena idea de cómo La inversión de control también funciona.
0 Comentarios