В частности, в Java, как используются синглтоны? Похоже, что все, что можно сделать с помощью синглтона, можно сделать и с помощью статических методов и переменных. Есть ли что-то, что мне не хватает. Многие пользователи предлагают отложенную загрузку в качестве причины, однако похоже, что в Java это не является преимуществом.
Единственное преимущество, о котором я могу думать, заключается в том, что реализация может быть улучшена за счет переопределенной реализации в новом классе, который заменяется в методе getInstance().
Обновить/изменить:
Преимущество Singleton перед static заключается в том, что первый более объектно-ориентирован, чем последний. С Singleton вы можете использовать наследование и полиморфизм для расширения базового класса, реализации интерфейса и предоставления различных реализаций.
(Похоже, это способ добиться результатов, аналогичных переопределению статических методов в Java.)
Есть ли еще какие-то преимущества?
"The only benefit I can think of is that the implementation could be enhanced though a overridden implementation in a new class, which is substituted in the getInstance() method."
Это было бы ошибочной реализацией шаблона Singleton в Java, потому что вы могли бы свободно создавать более одного объекта предполагаемого синглтона, создавая подкласс и разрешая создание его экземпляров средствами, отличными от методаgetInstance
. - person toniedzwiedz   schedule 22.06.2014