![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
Добрый вечер,
на работе возникла задача, правильно удалить синглтоны(их много более 40-50). причем разных видов(статические и динамические). Но проблема в том, что из-за их большого количества непонятно когда точно их можно удалять, а из-за того что они неправильно удаляются или вообще не удаляются, в конце работы приложения приложение редко но падает на удалении. Сам думаю правильно реализовать методы Destroy() для удаления памяти за синглтоном и всем остальным, что выделено динамически. и метод Terminate() для очистки листов и всяких объектов внутри. Возможно есть смысл иметь какой-то менеджер на ними, чтобы верно удалять. Никто не сталкивался с подобной проблемой? Может быть кто-то сталкивался и обрисует идею или подскажет в каком направлении двигаться. За любой пост спасибо. |
|||
|
||||
Result |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 15.5.2011 Репутация: 2 Всего: 5 |
Александреску сталкивался ![]() |
|||
|
||||
toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
Хм, как столь интересная книга ушла от моего глаза, понять не могу, спасибо=)
|
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
> За любой пост спасибо.
За любой, так за любой... Синглтоны - зло. Не используй их вообще. Кстати, я когда прочитал заголовок, решил что вопрос об избавлении от синглтонов )) -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
borisbn
Нужно было написать приписку(Кроме постов сиглтоны зло) ![]() |
|||
|
||||
Alca |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Я так и делал. Добавлено через 1 минуту и 30 секунд
Почему это вдруг, если нужен только один экземпляр класса? |
||||
|
|||||
toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
Result, Книга полезная.
![]() Не буду разжигать холивар, но синглтоны полезны, но думаю если использовать их с умом. согласен поэтому с Alca А так как сделаны у нас... они неконтролируемы и их много. |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
1. Зависимость от синглтона не видна в контракте твоего класса - твой класс неудобно рефакторить 2. Проблемы с удалением: удалять (вызывать Destroy()) нужно гарантировано после того, как все, кто с ним работает, перестали его вызывать, иначе получится воскрешение мёртвых 3. Лишний вызов функции - мелочь, конечно, но всё-таки 4. В случае (пусть даже и архи-редком), когда всё-таки потребуется иметь два экземпляра класса, рефакторинг будет ооооч. неприятный 5. Для тестирования частенько нужно подменять реальный объект фейковым (или с другим функционалом). В случае с синглтоном придётся менять сам синглтон. У меня была такая проблема: в одной программе я для хранения настроек использовал синглтон Config. Как-то меня попросили сделать из программы dll, экспортирующую класс с определённым интерфейсом, для вставки в другую программу. Я сделал, а оказалось, что они хотели создавать 2 экземпляра моего класса. Получилась каша с настройками и пришлось переделывать. Были и ещё примеры (я раньше много грешил с синглтонами) ![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
Result |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 15.5.2011 Репутация: 2 Всего: 5 |
Насколько помню ,в либе Loki реализован паттерн синглтон на темплейтах, т.е. ничего менять не нужно. |
|||
|
||||
toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
Result
Так оно и есть |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |