powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / О различных реализациях Sigleton
16 сообщений из 16, страница 1 из 1
О различных реализациях Sigleton
    #34108702
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В литературе обычно сталкиваюсь со следующим примером реализации " Одиночки ".
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class ClassicSingleton {
   private static ClassicSingleton instance = null;
   protected ClassicSingleton() {
      // Exists only to defeat instantiation.
   }
   public static ClassicSingleton getInstance() {
      if(instance == null) {
         instance = new ClassicSingleton();
      }
      return instance;
   }
}

Среда разработки IntellijIdea подсовывает мне следующую реализацию.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class IdeaSingleton {
    private static IdeaSingleton ourInstance = new IdeaSingleton();

    public static IdeaSingleton getInstance() {
        return ourInstance;
    }

    private IdeaSingleton() {
    }
}

Долго смотрел на IdeaSingleton и.. стёр нафиг. Объяснить свою неприязнь ко второму варианту реализации я щас не готов. Надо почитать доки про загрузчик классов. И, кроме того, есть еще другие неясности...

Вопрос! Какой вариант использует народ?

Спасибо.
...
Рейтинг: 0 / 0
О различных реализациях Sigleton
    #34108720
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDEA дурного не посоветует... А вот "литература"... БТВ, где вы это нашли (первый вариант)?
...
Рейтинг: 0 / 0
О различных реализациях Sigleton
    #34108737
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне второй нравится
...
Рейтинг: 0 / 0
О различных реализациях Sigleton
    #34108766
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Второй вариант лучше
Double-checked locking and the Singleton pattern

Dmitriy O "Итак вред от арабов (черных мусульман)
- Присутсвовали в татаро-монгольском иге"
...
Рейтинг: 0 / 0
О различных реализациях Sigleton
    #34108918
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитывал книжки:

1. James W.Cooper - Design Patterns
2. Steven John Metsker - Design Patterns

Насчет safe-thread - полностю согласен. В первом варианте этот фактор никак не учитывается.

Просто у меня закралось сомнение, что второй вариант недостаточно lazy. Т.е. форсирует конструктор не во время первого обращения к getInstance а на более раннем этапе прогрузки класса в память загрузчиком.
...
Рейтинг: 0 / 0
О различных реализациях Sigleton
    #34109270
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я за второй вариант. Видел его у Блоха :)
...
Рейтинг: 0 / 0
О различных реализациях Sigleton
    #34109430
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvЯ за второй вариант. Видел его у Блоха :)
Скорее не этот, а вот этот
...
Рейтинг: 0 / 0
О различных реализациях Sigleton
    #34109704
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фсе фигня , кроме пчел. Хотя, если призадуматься, пчелы тоже фигня.

я к тому, что идеального синглетона на все случаи жизни не существует.
...
Рейтинг: 0 / 0
О различных реализациях Sigleton
    #34110871
Вопросник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а нафига эти сингелтоны вообще нужны?
...
Рейтинг: 0 / 0
О различных реализациях Sigleton
    #34110889
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаем книжки или ищем в гугле что такое синглетон. Люди, вы вообще обленились.
...
Рейтинг: 0 / 0
О различных реализациях Sigleton
    #34110904
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати вот код синглетона моего производства :) Помимо сниженных затрат на вызов synchronized методов имеет отложенную инициализацию.



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
 public   class  SingletonImpl {
     private   static  SingletonImpl self =  null ;
     private   static   boolean  busy = false;
     private  SingletonImpl() {
         super ();
        // perform initialization here
        self =  this ;
    }
     public   static  SingletonImpl getInstance() {
         if  (self ==  null  & busy !=false){
             return  createIstanse();
        }
         else   return  self;
    }

     private   synchronized   static  SingletonImpl createIstanse() {
        busy=true;
         if  (self ==  null ) {
            self =  new  SingletonImpl();
        }
        busy = false;
         return  self;
    }
}

Вообще хотел бы подработать на ниве Java. Кому интересно удаленное сотрудничество и есть какие-либо предложения, пишите, обсудим. (если в Москве находитесь, то можно и встречаться). Пишите:ASUTPSP@mail.ru
...
Рейтинг: 0 / 0
О различных реализациях Sigleton
    #34110909
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS тут одна ошибка только есть :) Кто поймет механизм, поймет и где ошибка :)
...
Рейтинг: 0 / 0
О различных реализациях Sigleton
    #34110987
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первый вариант реализации шаблона: объект создается только когда он требуется первый раз. Согласно теории, чтобы случайно не было создано двух объектов (из нескольких потоков например) надо сделать метод getInstance() как synchronized

Второй вариант: объект создается при загрузке класса, даже если не будет использован.
...
Рейтинг: 0 / 0
О различных реализациях Sigleton
    #34111484
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timm LeonidvЯ за второй вариант. Видел его у Блоха :)
Скорее не этот, а вот этот
Нет, именно как в IDEA:
Код: plaintext
\n public   class  Elvis{\n   private   static   final  Elvis INSTANCE =  new  Elvis();\n   private  Elvis(){\n  }\n   public   static  Elvis getInstance(){\n     return  INSTANCE;\n  }\n}\n
статья 2.
...
Рейтинг: 0 / 0
О различных реализациях Sigleton
    #34111515
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, AСУ ПТушник и mayton.
Инициализировать поля класса нулевыми значениями не красиво. Java сама это делает.
...
Рейтинг: 0 / 0
О различных реализациях Sigleton
    #34111904
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я в курсе, сказалась привычка не доверять заявленному для ключевых вещей в работе чего-либо.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / О различных реализациях Sigleton
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]