Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Singleton и static-класс, в чём архитектурная разница? 
:(
    Опции темы
Се ля ви
Дата 7.10.2005, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 8
Всего: 127



Недавно продумывал архитектуру одного приложения и пришёл к выводу, что нет никакой разницы между САБЖами на архитектурном уровне.

Действительно - возьмите синглтон, все действия в его конструкторе вынесите в статический блок инициализации, все поля и методы обзавите static`ами - и получите с архитектурной точки зрения абсолютно то же самое, только не нужно будет брать его у класса посредством метода типа getA(), а сразу вызывать методы.

Я так ни к чему и не пришёл в своих размышлениях и решил использовать синглтон просто потому что так больше принято. Хотелось бы услышать какие-нибудь соображения на этот счёт от форумчан smile


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Zandr
Дата 7.10.2005, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 433
Регистрация: 16.7.2004
Где: Новосибирск

Репутация: 9
Всего: 13



IMHO Синглтон зарефакторить легче, да и писанины (куча static'ов) меньше smile
PM MAIL   Вверх
LSD
Дата 7.10.2005, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Се ля ви на самом деле разница есть и не маленькая. С помощью синглетона можно легко менять реализацию, в зависимости от платформы, настроек и т.п. Посмотри на Toolkit.getDefaultToolkit().


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
LSD
Дата 7.10.2005, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Кстати синглетон позволяет реализовать такую штуку, как отдельный экземпляр на каждый поток. И не мучатся с синхронизацией.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Zandr
Дата 7.10.2005, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 433
Регистрация: 16.7.2004
Где: Новосибирск

Репутация: 9
Всего: 13



LSD, имеется в виду синглтон, который есть вообще единственный объект данного класса на всю ява-машину. Если я ничего не путаю.
PM MAIL   Вверх
LSD
Дата 7.10.2005, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



И я о нем же. smile

Просто понятие синглетона не обязательно трактовать как один экземпляр на одну Java машину. Его в принципе можно расширить, один экземпляр на одну общность. А общностью может быть и один компьютер и одна система, и один поток и один пакет.

И еще один аргумент это возможность передавать объект в качестве параметра функции.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
COVD
Дата 7.10.2005, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата
Просто понятие синглетона не обязательно трактовать как один экземпляр на одну Java машину. Его в принципе можно расширить, один экземпляр на одну общность. А общностью может быть и один компьютер и одна система, и один поток и один пакет.


Поток - это обьект. Один экземпляр на один обьект = синглтон?


Это сообщение отредактировал(а) COVD - 7.10.2005, 16:32
PM MAIL   Вверх
Souljah
Дата 7.10.2005, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 24.12.2004

Репутация: нет
Всего: 7



Цитата(LSD @ 7.10.2005, 12:46)
синглетон позволяет реализовать такую штуку, как отдельный экземпляр на каждый поток


это как? статический ThreadLocal?
PM MAIL   Вверх
hatsumeika
Дата 7.10.2005, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.5.2005
Где: Минск

Репутация: 2
Всего: 2



синглтон может наследовать и реализовывать интерфейс. а статические методы не унаследуешь.
поэтому синглтон принципиально архитектурно мощнее.
PM MAIL   Вверх
LSD
Дата 7.10.2005, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(COVD @ 7.10.2005, 17:29)
Поток - это обьект. Один экземпляр на один обьект = синглтон?

Поток это не просто объект, это структура JVM (она даже имеет отображение на структуры ОС), со своим своим стеком, своими служебными структурами данных и т.д. А объект это всего лишь прикладной интерфейс для программиста.


Цитата(Souljah @ 7.10.2005, 17:51)
это как? статический ThreadLocal?

Угу, что то типа:
Код
public class ThreadSingle
{
  private static ThreadLocal<ThreadSingle> instance = new ThreadLocal<ThreadSingle>();

  public static ThreadSingle getInstance()
  {
    ThreadSingle inst = instance.get();
    if(inst == null)
    {
      inst = new ThreadSingle();
      instance.set(inst);
    }
    return inst;
  }

  private ThreadSingle()
  {
    //Do some usefull here
  }
}

Такая штука может быть полезна, если у нас есть некая сложная структура данных, к которой периодически выполняются сложные запросы, требующие эксклюзивного доступа и достаточно долго выполняющиеся. Тогда может иметь смысл завести по екземпляру на поток, и не мучатся с синхронизацией.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
djGri
Дата 10.10.2005, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 21.2.2005

Репутация: 1
Всего: 3



Еще при помощи Singletona можно контолировать количество его объектов
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.