Si dovrebbe utilizzare un singleton nel seguente caso?

1

Creazione di un'app per Android che visualizza un elenco di% oggetti% di% in Dog . Quando tocchi un Activity A nell'elenco, a quel cane singolo si accede con Dog , Activity B e altre 3 classi.

Dopo che Fragment B è stato modificato, viene passato a Dog e Activity C che tutti lo modificano, prima di effettuare una richiesta di rete.

Attualmente, ho passato la stessa istanza di Activity D avanti e indietro attraverso attività, frammenti e classi usando i callback, gli extra parcelable negli intenti e i bundle per i frammenti. Questo sta diventando davvero complicato molto velocemente. Usare una Singleton è una buona idea in questa situazione?

Se Dog era un singleton, come posso caricare più Dog s per iniziare?

Pensa all'elenco di Dog s come elenco di caselle vuote. Dopo aver selezionato un singolo Dog , passa attraverso un nastro trasportatore di attività, frammenti e classi helper, in cui la casella viene riempita di dati. Alla fine del flusso di utenti, questa casella è piena di informazioni, pronte per essere spedite al server di back-end.

    
posta Ajay Ramesh 26.01.2017 - 17:10
fonte

3 risposte

1

Non penso che dovresti usare un modello singleton in questo caso. Quindi, se si implementa correttamente Singleton, esiste solo un'istanza per la classe di cani. Se hai una lista con i cani, non è possibile implementare un singleton se non vuoi mostrare lo stesso cane in ogni riga.  Quindi hai un riferimento al cane come questo Dog dog = Dog.getInstance() ;

Ogni volta che accedi al metodo getInstance, il singleton ti restituirà questo oggetto. Tutto ciò che cambi, è cambiato in questo unico oggetto. Quindi se vuoi avere più di un cane, lo schema di Singleton non è il modo giusto per te!

    
risposta data 26.01.2017 - 17:30
fonte
0

Should a singleton be used in the following case?

No, sembra che non funzionerebbe.

Forse hai una nuova responsabilità che dovresti creare per la propria classe, vale a dire quella di avere un cane selezionato e il suo spostamento attraverso le attività. Il cane selezionato sarebbe un membro di quella classe, ad esempio uno stato fisso per oggetto istanza, per tutti i metodi (di quella classe) su cui lavorare (e senza usare il modello singleton).

Con quello forse puoi avere cani diversi in diversi flussi in parallelo.

    
risposta data 26.01.2017 - 17:35
fonte
0

Nulla nella descrizione implica un bisogno per limitare Dog a un singolo oggetto. Questo suggerisce che fare ginnastica OOP per assicurarti di non finire con due cani allo stesso tempo non è una buona idea. Come potrebbero due cani corrompere o corrompere il tuo programma nello scenario che descrivi?

Singleton di solito è un cattivo modello di progettazione per cominciare. Tieni presente che i modelli di progettazione sono soluzioni generalizzate per le lingue OOP nei casi in cui il linguaggio stesso non è in grado di gestire la situazione in modo naturale. Quando usi uno schema di progettazione, lo fai di solito perché non hai una soluzione più naturale.

    
risposta data 26.01.2017 - 18:51
fonte

Leggi altre domande sui tag