Недавно я узнал, что enum
- более эффективный способ реализовать синглтон.преимущество перечисления над классом в одноэлементном шаблоне
Singleton с enum
:
public enum Singleton{
INSTANCE;
public void doStuff(){
//......
}
public void doMoreStuff(){
//......
}
}
Singleton с class
:
public class Singleton{
private static final INSTANCE = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return INSTANCE;
}
public void doStuff(){
//......
}
public void doMoreStuff(){
//......
}
}
ВОПРОС: Каковы возможные преимущества и недостатки использования перечисления над классом для реализации одиночки?
Евангелие от Джошуа Блоха: [Пункт 3: Принудительное использование свойства singleton с помощью частного конструктора или типа перечисления] (http://www.informit.com/articles/article.aspx?p=1216151&seqNum= 3) –
Синглы - зло. Вместо этого используйте инъекцию. – eitanfar
@ Duncan: так, согласно статье, «одноэлементный тип перечисления - лучший способ реализовать синглтон»? eitanfar: может быть, но мне нужно знать, что лучше. –