Обсуждение:Одиночка (шаблон проектирования)

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Пожалуйста, добавляйте новые темы снизу

Без названия[править код]

Мне кажется, можно добавить в минусы сложность модульного тестирования приложений, использующих Одиночки. Как альтернативу, можно использовать паттерн Реестр.

Примеры Singleton на C# устарели. Надо делать через Lazy<T> 194.8.164.162 10:43, 15 ноября 2010 (UTC)[ответить]

Пример на питоне очень напоминает борг. С питоном почти не работал, но если разберусь, то поправлю. А пока стоит обратить внимание и либо поправить, либо добавить информацию о борге, как об очень похожем, но отличающемся паттерне. said 10:31, 9 декабря 2010 (UTC)[ответить]

Приватная переменная инициализируется вне класса. Зачем?Неясно.[править код]

class OnlyOne
{
public:
	static OnlyOne* Instance()
	{
		if(theSingleInstance==0)
			theSingleInstance=new OnlyOne;
		return theSingleInstance;
	}
private:
	static OnlyOne* theSingleInstance;
	OnlyOne(){};
};
OnlyOne* OnlyOne::theSingleInstance=0;

Усулгурт 18:54, 2 мая 2011 (UTC)[ответить]

Потому что она статическая, хоть бы скомпилировать попробовал. --DGuselnikov 06:24, 3 сентября 2011 (UTC)[ответить]

Сообщение с ВП:СОО[править код]

Пример на Java 1.5: с отложенной инициализацией является неправильным.

Книга "Java. Эффективное программирование", Дж. Блох, 2012. Изд. "Лори" с 180 - 181

Правильный пример: с.181

Автор сообщения: Доброжелатель:) 86.57.255.94 08:52, 9 октября 2012 (UTC)[ответить]

Перенесено со страницы ВП:СО. --IGW 18:33, 28 декабря 2012 (UTC)

Первый пример на Java[править код]

Не понимаю, зачем нужна переменная localInstance? Не проще ли так написать:

public class Singleton {
    private static volatile Singleton instance;

    private Singleton() {}
    
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

86.57.244.10 10:23, 5 февраля 2016 (UTC)[ответить]