In che modo l'inversione di dipendenza è un'estensione di OCP?

3

Sto leggendo sui principi SOLID e ho appena letto che Dependency Inversion (DI, che qui si distingue dall'iniezione di dipendenza, che è un modo per ottenere l'inversione) è un'estensione del principio Open-Closed (OCP). Com'è esattamente inteso, se l'OCP sta rendendo la classe estendibile senza toccare il codice originale, in pratica.

    
posta Ezoela Vacca 01.02.2018 - 07:58
fonte

1 risposta

5

Il DIP richiede alle tue classi di dipendere dalle astrazioni. Poiché puoi sempre fornire implementazioni diverse di queste dipendenze astratte, creano punti di estensione naturali che ti consentono di modificare il comportamento della classe senza modificare la classe stessa.

Questo, ovviamente, è esattamente ciò che richiede l'OCP.

Ad esempio, immagina di avere un TaxReporter che richiede un'istanza di un'interfaccia ITaxCalculator durante la costruzione. Fornendo un'implementazione diversa di ITaxCalculator , hai modificato il modo in cui i rapporti vengono generati senza toccare la classe TaxReporter .

L'ereditarietà non è l'unico modo per realizzare l'OCP.

    
risposta data 01.02.2018 - 10:24
fonte

Leggi altre domande sui tag