Si dovrebbe definire un'interfaccia e codificarne un adattatore ogni volta che viene trovata una dipendenza?

2

Data una particolare classe / libreria di terze parti che vuoi utilizzare, la cosa più semplice da fare sarebbe semplicemente richiamare le API dell'API tramite la tua applicazione.

D'altra parte hai la possibilità di definire un'interfaccia che detta genericamente ciò che vuoi - non come -, e quindi seguire il modello dell'adattatore per legare l'interfaccia alla classe di terze parti.

Attualmente mi sento propenso alla seconda opzione perché:

  • Crea un singolo punto di cambiamento se vuoi sostituire il fornitore di funzionalità

  • In modo simile, ti consente di aggiungere più provider senza modificare il codice dell'applicazione

  • Permette di seguire le proprie convenzioni di denominazione, firme di metodo più semplici, ecc.

Il fatto è che non ho esperienza di questo approccio e non so quanto possa essere complicato o scomodo. Mi piacerebbe anche sapere se ci sono errori comuni quando si segue questo modello.

Nel mio caso particolare non voglio avvolgere una libreria giantic -e.g. una GUI o una piccola funzione. Inoltre ci sono possibilità che cambierò il mio provider in futuro, quindi questo non è uno YAGNI.

Grazie

    
posta vemv 08.10.2011 - 22:57
fonte

2 risposte

3

Il principio di inversione delle dipendenze suggerisce che dovresti:

High-level modules should not depend on low-level modules. Both should depend on abstractions.

Dovresti scrivere il tuo codice con un'astrazione chiara e semplice dei servizi esterni di cui potresti aver bisogno (ad esempio un complesso toolkit GUI nel tuo caso) e quindi scrivere solo implementazioni, sia a mano che come adattatore per componenti di terze parti .

    
risposta data 09.10.2011 - 01:46
fonte
6

Hai identificato un errore comune - avvolgendo l'intera interfaccia quando ne hai solo bisogno. Ciò aumenterà drasticamente il codice che scrivi e dovrai mantenere quando cambia la dipendenza.

Solo avvolgendo le chiamate API che effettivamente ti servono definisci esattamente che cosa vuoi dalla dipendenza. Ciò ti aiuterà a mantenere le cose gestibili e ti consentirà anche di valutare più facilmente i nuovi fornitori - implementano almeno le funzioni che già usi?

    
risposta data 08.10.2011 - 23:03
fonte

Leggi altre domande sui tag