Обсуждение:Одиночка (шаблон проектирования)
Эта статья тематически связана с вики-проектом «Информационные технологии», цель которого — создание и улучшение статей по темам, связанным с информационными технологиями. Вы можете её отредактировать, а также присоединиться к проекту, принять участие в его обсуждении и поработать над требуемыми статьями. |
Без названия править
Мне кажется, можно добавить в минусы сложность модульного тестирования приложений, использующих Одиночки. Как альтернативу, можно использовать паттерн Реестр.
Примеры 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)
Первый пример на 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;
}
}