![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 8 Всего: 127 |
Недавно продумывал архитектуру одного приложения и пришёл к выводу, что нет никакой разницы между САБЖами на архитектурном уровне.
Действительно - возьмите синглтон, все действия в его конструкторе вынесите в статический блок инициализации, все поля и методы обзавите static`ами - и получите с архитектурной точки зрения абсолютно то же самое, только не нужно будет брать его у класса посредством метода типа getA(), а сразу вызывать методы. Я так ни к чему и не пришёл в своих размышлениях и решил использовать синглтон просто потому что так больше принято. Хотелось бы услышать какие-нибудь соображения на этот счёт от форумчан -------------------- |
|||
|
||||
| Zandr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: 9 Всего: 13 |
IMHO Синглтон зарефакторить легче, да и писанины (куча static'ов) меньше
|
|||
|
||||
| LSD |
|
|||
![]() 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. |
|||
|
||||
| LSD |
|
|||
![]() 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. |
|||
|
||||
| Zandr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: 9 Всего: 13 |
LSD, имеется в виду синглтон, который есть вообще единственный объект данного класса на всю ява-машину. Если я ничего не путаю.
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
И я о нем же.
Просто понятие синглетона не обязательно трактовать как один экземпляр на одну 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. |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Поток - это обьект. Один экземпляр на один обьект = синглтон? Это сообщение отредактировал(а) COVD - 7.10.2005, 16:32 |
|||
|
||||
| Souljah |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 24.12.2004 Репутация: нет Всего: 7 |
это как? статический ThreadLocal? |
|||
|
||||
| hatsumeika |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 14.5.2005 Где: Минск Репутация: 2 Всего: 2 |
синглтон может наследовать и реализовывать интерфейс. а статические методы не унаследуешь.
поэтому синглтон принципиально архитектурно мощнее. |
|||
|
||||
| LSD |
|
||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Поток это не просто объект, это структура JVM (она даже имеет отображение на структуры ОС), со своим своим стеком, своими служебными структурами данных и т.д. А объект это всего лишь прикладной интерфейс для программиста.
Угу, что то типа:
Такая штука может быть полезна, если у нас есть некая сложная структура данных, к которой периодически выполняются сложные запросы, требующие эксклюзивного доступа и достаточно долго выполняющиеся. Тогда может иметь смысл завести по екземпляру на поток, и не мучатся с синхронизацией. -------------------- 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. |
||||||
|
|||||||
| djGri |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.2.2005 Репутация: 1 Всего: 3 |
Еще при помощи Singletona можно контолировать количество его объектов
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |