Qual è il significato di iniettare un componente nella programmazione?

2

I componenti comuni a tutte le implementazioni di ExoPlayer sono:

  • Un MediaSource che definisce i contenuti multimediali da riprodurre, carica i media, e da cui è possibile leggere il supporto caricato. Un MediaSource è iniettato tramite ExoPlayer.prepare all'inizio della riproduzione.
  • Renderers che rendono singoli componenti del media. I renderer sono iniettato quando il giocatore è stato creato.
  • Un TrackSelector che seleziona tracce fornite da MediaSource per essere consumate da ciascuno dei Renderer disponibili. A TrackSelector viene iniettato quando il giocatore è creato.
  • Un LoadControl che controlla quando i buffer di MediaSource più contenuti multimediali e quanti contenuti multimediali sono memorizzati nel buffer. Viene iniettato un LoadControl quando il giocatore è creato.

Come capisco da questo contesto, sembra che l'iniezione sia qualcosa di simile all'inizializzazione piuttosto che all'istanziazione. È giusto?

    
posta codezombie 28.11.2017 - 12:21
fonte

2 risposte

6

È corretto. Invece di implementare l'implementazione di ExoPlayer per istanziare ogni singolo Renderer, basta creare solo quelli effettivamente necessari per quella particolare implementazione e quindi iniettarli nell'implementazione, disaccoppiando quindi la classe ExoPlayer dalla classe Renderer.

Vedi Iniezione di dipendenza per ulteriori dettagli.

    
risposta data 28.11.2017 - 13:14
fonte
5

Iniezione qualsiasi valore deriva dal concetto di iniezione di dipendenza . Al suo core, l'integrazione delle dipendenze definisce il tempo di esecuzione dell'attuazione effettiva di un'interfaccia che verrà utilizzata per l'applicazione.

Ecco alcune caratteristiche:

  • Codice alle interfacce. Ciò consente di eseguire facilmente il mocking o lo stub per i test delle unità e l'utilizzo del codice reale in produzione
  • Qualcosa al di fuori della tua classe fornisce l'implementazione. (cioè iniettare il componente)
  • La promessa è che il tuo codice diventa più modulare e più flessibile.

Detto questo, l'iniezione di dipendenza non si limita all'iniezione di componenti. Può anche iniettare valori di configurazione.

Il termine Inject significa fondamentalmente fornire l'implementazione.

    
risposta data 28.11.2017 - 15:59
fonte

Leggi altre domande sui tag