SOLIDO — Dallo zero alla patata 5

Informazioni sul principio di inversione delle dipendenze (DIP) in questo articolo, questo sarà l'ultimo articolo su SOLID.

Oggi continuerò a spiegare il principio di inversione delle dipendenze (DIP) in questo articolo. Avremo familiarità con altri principi in SOLID perché anche se non conosciamo il principio SOLID possiamo imparare dal codice del nostro senior, vari articoli di supporto e tutorial, ma sarà molto raro sentire cos'è Dependency Inversion e come dovremmo usarlo e perché dovremmo usarlo.

A proposito, se lavori già come Android Developer non confondere con Dependency Injection. Conoscerai già le librerie popolari Dagger, Hilt e Koin. Questi due sono molto diversi quindi fai attenzione quando spieghi soprattutto nelle interviste.

Dependency Injection è una tecnica di implementazione per popolare le variabili di istanza di una classe. Dependency Inversion è una linea guida generale di progettazione che raccomanda che le classi abbiano solo relazioni dirette con astrazioni di alto livello.

Principio di inversione delle dipendenze (DIP): i moduli di alto livello non dovrebbero dipendere da moduli di basso livello; entrambi dovrebbero dipendere da astrazioni.

Lascia che ti spieghi con una semplice implementazione del codice, dopodiché capirai meglio DIP. Come al solito iniziamo con Studentuna classe che ha una dipendenza da una Teacherclasse per eseguire alcune funzionalità:

class Student(private val teacher: Teacher) {
    fun askQuestion(question: String) {
        teacher.answerQuestion(question)
    }
}

quindi lascia che refactor aderisca al DIP , possiamo introdurre un'astrazione tra le classi Studente Teacher:

interface QuestionAnswerer {
    fun answerQuestion(question: String)
}

class Teacher : QuestionAnswerer {
    override fun answerQuestion(question: String) {
        // answer the specified question
    }
}

class Student(private val questionAnswerer: QuestionAnswerer) {
    fun askQuestion(question: String) {
        questionAnswerer.answerQuestion(question)
    }
}

Questo aderisce al DIP perché la Studentclasse ora dipende da un'astrazione ( QuestionAnswerer) piuttosto che da un'implementazione concreta ( Teacher). Ciò consente una maggiore flessibilità ed estensibilità, poiché qualsiasi classe che implementa l' QuestionAnswererinterfaccia può essere utilizzata come dipendenza per la Studentclasse, non solo per la Teacherclasse.

Dopo aver visto la versione con refactoring, spero che capirai perché dovremmo usare anche Dependency Inversion , DIP aiuta a disaccoppiare i componenti nella tua applicazione e può rendere il tuo codice più flessibile, gestibile e più facile da testare.

Grazie per aver dedicato del tempo a leggere questo articolo. Spero che la mia scrittura sia stata informativa e stimolante. Buon codice per tutti voi allora prima.

Articolo precedente su SOLIDO :

Principio di responsabilità unica (SRP) :https://medium.com/arpalar-tech/solid-from-zero-to-potato-e7b5cfe8c7a1

Principio aperto/chiuso (OCP): https://medium.com/arpalar-tech/solid-from-zero-to-potato-2-5a4c17bd8ec8

Principio di sostituzione di Liskov (LSP): https://medium.com/arpalar-tech/solid-from-zero-to-potato-3-94d6f63dbbfe

Principio di segregazione dell'interfaccia (ISP):https://medium.com/arpalar-tech/solid-from-zero-to-potato-4-d1d9b42c3a78

Suggested posts

Ricerca di informazioni sui nomi di dominio

Un estratto da Small, Sharp Software Tools di Brian P. Hogan

Ricerca di informazioni sui nomi di dominio

Quando fai una richiesta a facebook.com, il tuo computer cerca il nome di dominio per tradurre quel nome di dominio in un indirizzo IP in modo che il tuo computer possa effettuare quella connessione.

La parola D e la parola L in UI Design. Questioni linguistiche. Non essere razzista.

La parola D e la parola L in UI Design. Questioni linguistiche. Non essere razzista.

La nostra lingua è uno strumento potente che può modellare i nostri pensieri, atteggiamenti e azioni. Anche termini apparentemente innocui possono perpetuare pregiudizi e stereotipi dannosi.

Related posts

L'assassinio di Jordan Neely e il problema del razzismo "patriottico".

Gli Stati Uniti possono fare il passo essenziale per non equiparare il comportamento razzista all'essere un buon americano?

L'assassinio di Jordan Neely e il problema del razzismo "patriottico".

[Avviso di attivazione: questo saggio include schermate di persone che elogiano l'assassino di Jordan Neely.] I funzionari delle forze dell'ordine hanno finalmente - e forse con riluttanza - accusato Daniel Penny, l'uomo che ha soffocato Jordan Neely fino alla sua morte, per quell'omicidio.

Conversazioni pericolose

Conversazioni pericolose

Se vogliamo continuare a prosperare su questo pianeta, dovremo avere conversazioni pericolose. Quelli che mettono in discussione ciò che abbiamo fatto, ciò che stiamo facendo e ciò che attualmente intendiamo continuare a fare (o stiamo pianificando di fare).

Rete televisiva Twitter

Rete televisiva Twitter

Ciò che è vecchio ora è di nuovo nuovo e ciò che prima era la cosa luccicante e scintillante ora sembra noioso. Non sto parlando dei jeans JNCO che stanno tornando in auge tra i ragazzi fighi del centro insieme ad altre mode di fine anni '90.

Cosa rende influente un podcast?

Cosa rende influente un podcast?

La scorsa settimana ho notato un comunicato stampa, inviato tramite PressGazette (un sito Web di notizie sui media britannici). L'articolo annunciava che Acast, la società di hosting e pubblicità di podcast di Scandi, avrebbe guidato un consorzio di editori "probabilmente i più influenti" nel podcasting.