Показать сообщение отдельно
Старый 01.10.2011, 01:19   #8
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: singleton vs static

Ех, вот жеж неудобства с С++.

В 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 хорош в виде объекта, для расширения, наследия и т.п. Но если это не нужно, так зачем клепать ещё?
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
den (01.10.2011), HolyDel (01.10.2011), Reizel (01.10.2011)