Come potrei evitare i singleton in questo caso? [duplicare]

0

Utilizzo di Dart nella parte client di un'app Web in cui ho un gestore applicazioni che contiene un List di istanze dell'applicazione e riferimenti a servizi che vengono utilizzati da ciascuna applicazione come nel seguente diagramma

Come puoi vedere il gestore delle applicazioni è un singleton, così come i servizi che contiene che sono usati da tutte le app, per me ha senso perché

  • Ho bisogno di avere solo un'istanza di ApplicationManager e ciascuna servizio
  • Più facile accedere ai servizi senza la necessità di passare i riferimenti
  • Devo conservare lo stato di ogni servizio
  • Quasi tutti i servizi hanno una cache

Ho trovato dei modi per evitare di avere i servizi come singleton, rendendoli privati della libreria che è una caratteristica del dardo, quindi inizializzo i servizi solo una volta dal gestore applicazioni, ma non riesco a rendere privato il ApplicationsManager perché è al livello più alto della libreria, apprezzerei i tuoi pensieri per un modo per evitare di avere il gestore delle applicazioni come un singelton.

    
posta user1590636 22.12.2014 - 16:12
fonte

1 risposta

4

i need to have only one instance of the ApplicationManager and each service

Quindi crea un'istanza. spallucce

easier to access services without the need to pass references

Quindi fornire una variabile globale per accedere a quell'istanza creata in precedenza. Se non ti piacciono le variabili globali per questo, non ti piacciono i singleton, perché i singleton condividono tutti gli stessi svantaggi, ma sono in qualche modo più complessi. In tal caso, passa semplicemente tutto ciò che serve.

    
risposta data 22.12.2014 - 17:31
fonte

Leggi altre domande sui tag