Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / О различных реализациях Sigleton / 16 сообщений из 16, страница 1 из 1
07.11.2006, 12:19:14
    #34108702
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О различных реализациях Sigleton
В литературе обычно сталкиваюсь со следующим примером реализации " Одиночки ".
Код: 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
07.11.2006, 12:23:50
    #34108720
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О различных реализациях Sigleton
IDEA дурного не посоветует... А вот "литература"... БТВ, где вы это нашли (первый вариант)?
...
Рейтинг: 0 / 0
07.11.2006, 12:28:51
    #34108737
LINUXER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О различных реализациях Sigleton
мне второй нравится
...
Рейтинг: 0 / 0
07.11.2006, 12:34:54
    #34108766
Pitbull terrier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О различных реализациях Sigleton
Второй вариант лучше
Double-checked locking and the Singleton pattern

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

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

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

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

я к тому, что идеального синглетона на все случаи жизни не существует.
...
Рейтинг: 0 / 0
08.11.2006, 09:04:33
    #34110871
Вопросник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О различных реализациях Sigleton
а нафига эти сингелтоны вообще нужны?
...
Рейтинг: 0 / 0
08.11.2006, 09:16:09
    #34110889
АСУ ТПшник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О различных реализациях Sigleton
Читаем книжки или ищем в гугле что такое синглетон. Люди, вы вообще обленились.
...
Рейтинг: 0 / 0
08.11.2006, 09:20:18
    #34110904
АСУ ТПшник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О различных реализациях Sigleton
Кстати вот код синглетона моего производства :) Помимо сниженных затрат на вызов 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
08.11.2006, 09:21:07
    #34110909
АСУ ТПшник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О различных реализациях Sigleton
PS тут одна ошибка только есть :) Кто поймет механизм, поймет и где ошибка :)
...
Рейтинг: 0 / 0
08.11.2006, 09:46:17
    #34110987
Andron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О различных реализациях Sigleton
Первый вариант реализации шаблона: объект создается только когда он требуется первый раз. Согласно теории, чтобы случайно не было создано двух объектов (из нескольких потоков например) надо сделать метод getInstance() как synchronized

Второй вариант: объект создается при загрузке класса, даже если не будет использован.
...
Рейтинг: 0 / 0
08.11.2006, 11:41:10
    #34111484
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О различных реализациях Sigleton
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
08.11.2006, 11:45:54
    #34111515
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О различных реализациях Sigleton
Кстати, AСУ ПТушник и mayton.
Инициализировать поля класса нулевыми значениями не красиво. Java сама это делает.
...
Рейтинг: 0 / 0
08.11.2006, 12:56:28
    #34111904
АСУ ТПшник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О различных реализациях Sigleton
я в курсе, сказалась привычка не доверять заявленному для ключевых вещей в работе чего-либо.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / О различных реализациях Sigleton / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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