Это, по общему признанию, довольно свободный вопрос. Мое текущее понимание синглетонов состоит в том, что они представляют собой класс, который вы создали таким образом, что создается только один экземпляр.
Для меня это звучит как статический класс. Основное отличие состоит в том, что со статическим классом вы не можете / не можете создавать его экземпляр, вы просто используете его, например, Math.pi()
. С одноэлементным классом вам все равно нужно сделать что-то вроде
singleton firstSingleton = new singleton();
firstSingleton.set_name("foo");
singleton secondSingleton = new singleton();
Поправь меня, если я ошибаюсь, но firstSingleton == secondSingleton
прямо сейчас, да?
secondSingleston.set_name("bar");
firstSingleton.report_name(); // will output "bar" won't it?
Обратите внимание, я спрашиваю этот язык независимо, больше о концепции. Поэтому я не беспокоюсь о том, как на самом деле писать такой класс, но больше о том, почему вы этого не хотите, и о том, что вам нужно учитывать.