Semplice gestione delle dipendenze per gli oggetti (perl)

1

Sono un po 'bloccato con un progetto di un progetto, in cui molti oggetti devono avere accesso allo stesso pezzo di informazione. Potrebbero essere alcuni dati, per costruire un oggetto di tipo globale per se stessi o l'oggetto stesso (essenzialmente un oggetto di configurazione).

Essenzialmente questi oggetti sono in un albero: in cima c'è un oggetto 'Router', che ha 'Interface', che ha 'Host'. Il router crea interfacce e l'interfaccia crea gli host. Inoltre, l'oggetto router ottiene quell'oggetto config come parametro nel costruttore.

Vorrei mantenere il codice pulito e facile da testare, mantenendo al minimo il mocking necessario e consentendo facili configurazioni di test.

Quali metodi sono consigliati per fornire accesso a questo oggetto di configurazione attraverso il progetto?

  1. usa un'istanza singleton dell'oggetto config
  2. usa un oggetto di configurazione superglobale
  3. Ogni oggetto (router, interfaccia, host) dovrebbe ottenere l'oggetto config tramite il costruttore - > in ogni nuovo oggetto chiamate ci dovrebbe essere questo oggetto di configurazione. Sarebbe come: Host- > nuovo ({config = > $ self- > config})
  4. Ogni oggetto dovrebbe avere un riferimento al router genitore. L'interfaccia e l'host avranno accesso al router (che verrà passato a loro nel costruttore - > weak_ref all'oggetto principale del router) e accederanno all'oggetto di configurazione del router
  5. L'interfaccia avrà un metodo delegato per recuperare l'oggetto config dal router e Host avrà accesso a questo oggetto di configurazione attraverso questo metodo - > questo implica che tutti dovrebbero essere a conoscenza dei suoi genitori (l'host dovrebbe avere un riferimento all'interfaccia genitore, l'interfaccia dovrebbe avere un riferimento al router ecc.)
  6. O forse un archivio globale di oggetti singleton, da cui tutti possono recuperare ciò che vogliono (oggetti di configurazione, handle del database, ecc.)
  7. O usa qualche sistema di iniezione delle dipendenze esistente, che sembra un eccesso (molto)
posta Davs 04.03.2014 - 17:11
fonte

1 risposta

3

Il mio voto è per la gestione delle dipendenze attraverso i costruttori delle tue classi (n. 3). Puoi usare qualsiasi meccanismo tu ritenga appropriato per generare l'oggetto config.

Consegnare agli oggetti le loro dipendenze attraverso il costruttore è essenzialmente la forma di Iniezione di Dipendenza di un uomo povero. L'unica cosa che ti mancherà di non avere un framework DI è la possibilità di avere una configurazione centralizzata delle tue dipendenze. Non ti servirà a meno che il tuo sistema non sia grande e devi gestire molte dipendenze.

    
risposta data 04.03.2014 - 17:37
fonte

Leggi altre domande sui tag