S'appuyant sur ce qui a été écrit dans la question SO Meilleure implémentation de singleton en Java - à savoir sur l'utilisation d'un enum pour créer un singleton - quelles sont les différences / avantages / inconvénients entre (constructeur omis)
public enum Elvis {
INSTANCE;
private int age;
public int getAge() {
return age;
}
}
puis appeler Elvis.INSTANCE.getAge()
et
public enum Elvis {
INSTANCE;
private int age;
public static int getAge() {
return INSTANCE.age;
}
}
puis appeler Elvis.getAge()
Un grand avantage est lorsque votre singleton doit implémenter une interface. En suivant votre exemple:
public enum Elvis implements HasAge { INSTANCE; private int age; @Override public int getAge() { return age; } }
Avec:
public interface HasAge { public int getAge(); }
Cela ne peut pas être fait avec la statique ...
la source
(Avec état) Les singletons sont généralement utilisés pour faire semblant de ne pas utiliser de variables statiques. Si vous n'utilisez pas réellement la variable publiquement statique, vous tromperez moins de gens.
la source
Je choisirais l'option qui est la plus simple et la plus claire. C'est quelque peu subjectif, mais si vous ne savez pas ce qui est le plus clair, optez pour l'option la plus courte.
la source