Ех, вот жеж неудобства с С++.
В C#, это выглядит так.
static:
class MyClass {
private static float a, b, c;
public static void Do() {
a = b + c;
}
}
...
MyClass.Do();
singleton:
class MyClass {
private float a, b, c;
private static MyClass instance;
private MyClass() { }
public static MyClass Instance {
get {
if (instance == null) {
instance = new MyClass();
}
return instance;
}
}
public void Do() {
this.a = this.b + this.c;
}
}
...
MyClass.Instance.Do();
Судите сами, но реальная необходимость в singleton'е, очень мало вероятна имхо.
Но конечно, многим религия не позволяет юзать static'и..
Кстати, Den, зачем ссылку удалил?
http://habrahabr.ru/blogs/refactoring/103681/
Тут отлично описываются разница их. И кстати да, много отличным поинтов подмечено.
Но суть больше в том что люди начинают сравнивать singleton'ы как альтернатива static'ам, но это не так, т.к. это две схожие но различные сущности. Singleton хорош в виде объекта, для расширения, наследия и т.п. Но если это не нужно, так зачем клепать ещё?