Se una classe non ha dati specifici dell'istanza va bene renderla un singleton?

3

Diciamo che ho il seguente codice Java:

public class ObjectConsumer implements Consumer<Object> {
    @Override
    public void accept(Object o) {
        System.out.println("Accepted " + o);
    }
}

Esempio di implementazione singleton:

public enum ObjectConsumer implements Consumer<Object> {
    INSTANCE;

    @Override
    public void accept(Object o) {
        System.out.println("Accepted " + o)
    }
}

La classe precedente non ha dati specifici dell'istanza (campi). Va bene renderlo un singleton? C'è qualcosa che dovrei tenere d'occhio quando faccio questo o ci sono dei chiari svantaggi?

    
posta Mibac 28.06.2017 - 14:50
fonte

1 risposta

12

No, non è corretto rendere una classe un Singleton, solo perché non ha dati di istanza.

Quando una classe è un Singleton, questo dà un messaggio molto specifico ai manutentori del software:

There must only ever be one instance of this class. Within the domain of the application, it does not make sense to have multiple instances of this class.

Il semplice fatto che più istanze si comporterebbero sempre in modo identico, perché non hanno dati di istanza, o che al momento hai solo bisogno di una istanza (mentre avere più non è un'impossibilità logica), non è una ragione sufficiente per fare la classe a Singleton.

    
risposta data 28.06.2017 - 15:25
fonte

Leggi altre domande sui tag