Comprensione della teoria DIP, DI, IoC

5

Per circa 2 mesi ho letto tutto quello che posso trovare per questi 3 argomenti e non sono ancora sicuro di averlo capito.

  1. Principio di inversione delle dipendenze . Significa che dovresti sempre fare affidamento solo sulle interfacce e non sulle loro implementazioni. Se la tua classe dipende da un'altra classe, è male, perché dipende dai dettagli di quella seconda classe. Se la tua classe dipende dall'interfaccia, è assolutamente OK, dal momento che questo tipo di dipendenza significa solo che la tua classe ha bisogno di qualcosa di astratto che possa fare qualcosa di specifico e che non ti interessi molto nel modo in cui lo fa.

    Poiché P in "DIP" sta per "Principle", dovrei probabilmente definirlo in questo modo: Il principio di inversione delle dipendenze è un principio che richiede che tutte le entità del tuo codice dipendano solo dai dettagli che realmente bisogno .

    Per "dettagli di cui hanno veramente bisogno" intendo interfacce per il caso più semplice. Ho anche usato la parola "entità" per sottolineare che il DIP è applicabile anche alle procedure e qualsiasi altra cosa, non solo alle classi.

  2. Iniezione di dipendenza . È applicabile solo alle entità abilitate per DI. L'entità abilitata per DI è un'entità che è "aperta" per configurare il suo comportamento senza modificare i suoi interni. Esistono 2 tipi di iniezione di base (quando si parla di classi):

    • Iniezione del Costruttore - è quando passi tutti i "dettagli astratti" richiesti all'oggetto proprio nel momento in cui sta per essere costruito.
    • Iniezione di setti - è quando "chiari" gli aspetti richiesti dopo che l'oggetto è già stato creato.

    Quindi, la definizione è probabilmente come la seguente: Dipendenza L'iniezione è un processo di passaggio dei "dettagli astratti" all'entità che veramente ha bisogno di questi dettagli .

    Per "davvero bisogno di questi dettagli" intendo interfacce per il caso più semplice. La parola "entità" è, come sempre, usata per sottolineare che DI è applicabile anche alle procedure e quant'altro.

  3. Inversion of Control. Viene spesso definito come "differenza tra librerie e framework", come "scrivere programmi nel modo in cui hai fatto la programmazione procedurale" e così via. Questa è la cosa più confusa per me. Credo che l'idea principale qui sia solo iniziare qualsiasi azione. O fai qualcosa "quando vuoi" (modo procedurale), o "attendi" finché qualcuno non ti chiede (modo IoC).

    La mia definizione è: IoC è una proprietà del flusso di esecuzione del tuo programma, quando non fai nulla finché loro ti chiedono di farlo .

    Sembra esattamente come "Principio di Hollywood", ma credo che "Hollywood Principle" e IoC siano assolutamente la stessa idea.

Capisco?

    
posta Andrey Agibalov 20.07.2011 - 21:15
fonte

1 risposta

5

Se guardi le tue tre definizioni, la distinzione è sottile, ma essenzialmente significano la stessa cosa.

Ciò che equivale a è fornire ciò che la classe ha bisogno (le sue dipendenze) attraverso i parametri nel suo costruttore. Questo è tutto. Esistono numerosi framework di Dipendenza per Iniezione che cercano di formalizzare questo processo, ma sono tutti uguali.

L'iniezione di dipendenza cerca sempre di fornire solo le dipendenze necessarie quando sono necessarie.

    
risposta data 20.07.2011 - 21:26
fonte