Это, по общему признанию, довольно свободный вопрос. Мое нынешнее понимание синглтонов заключается в том, что они являются классом, который вы создали таким образом, что только один экземпляр когда-либо создан.
Это очень похоже на статический класс для меня. Основное различие заключается в том, что со статическим классом вы не можете/не можете его использовать, вы просто используете его, например, Math.pi()
. С классом singleton вам все равно нужно сделать что-то вроде
singleton mySingleton = new singleton();
mysingleton.set_name("foo");
singleton otherSingleton = new singleton();
// correct me if i am wrong, but mysingleton == othersingleton right now, yes?
// this the following should happen?
otherSingleston.set_name("bar");
mysingleton.report_name(); // will output "bar" won't it?
Обратите внимание, что я задаю этот язык самостоятельно, больше о концепции. Поэтому я не беспокоюсь о том, как кодировать такой класс, но еще больше, почему вы не хотите и что вам нужно будет учитывать.