Come utilizzare l'integrazione delle dipendenze per le applicazioni che sono configurabili all'avvio?

0

Sto scrivendo software che deve essere abbastanza configurabile in natura. A questo punto, ciò significa che prima legge in un file di configurazione degli utenti e quindi crea gli oggetti necessari in base a tale configurazione.

Come risultato della creazione di oggetti basati sulla funzionalità desiderata degli utenti, mi sembra che Inversion of Control non sia realmente fattibile, il che rende impossibile l'iniezione della dipendenza.

Ad esempio, diciamo che devo dire a un programma di elaborare alcuni dati in un certo modo. Posso configurarlo quando si avvia per elaborare i dati con i processori A o B o C o anche A e C. Se devo costruire questi oggetti in base alla configurazione di un utente, non so come consentire l'iniezione delle dipendenze.

Si tratta di uno scenario in cui l'iniezione di dipendenza non è appropriata o ci sono modelli diversi (di cui non sono a conoscenza) che risolvono questo problema e consentono l'iniezione di dipendenza? Se ci sono altri schemi, quali sono?

Penso che la radice della mia domanda sia questa:

Se ho delle dipendenze A, B e C e un utente può configurare il software all'avvio per utilizzare qualsiasi numero di queste dipendenze (A, A, B o A, B, C o A, C o A, C, C, ecc.) Come posso fare un'iniezione di dipendenza quando gli oggetti non sono singleton e devo cambiare le dipendenze necessarie all'avvio?

    
posta binarylegit 10.08.2016 - 17:04
fonte

1 risposta

2

Come è questo un problema? L'iniezione di dipendenza sta semplicemente passando nelle dipendenze dalle cose che ne hanno bisogno. Occasionalmente non è appropriato, ma quei casi sono dove le dipendenze sono strongmente sostenute e hanno una semantica sottile. Non è questo il caso.

Se parli di contenitori di Inversion of Control, ciò sarebbe più sensato. Alcuni sono ingombranti quando i componenti non sono fissi o noti in anticipo. Alcuni sono più flessibili a tale riguardo. Potresti semplicemente dover indagare su quali sono le tue opzioni.

Oppure puoi sbarazzartene e fare DI in altri modi (costruzione o proprietà di iniezione, localizzatori di servizio, contenitori IoC personalizzati, ecc.).

    
risposta data 10.08.2016 - 17:11
fonte