![]() |
Модераторы: Daevaorn Страницы: (9) Все « Первая ... 2 3 [4] 5 6 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]() ![]() ![]() |
|
||
|
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 3 Всего: 172 |
Ты уверен? -------------------- |
|||
|
||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
После первого вызова ![]() Это сообщение отредактировал(а) chipset - 2.4.2005, 11:03 --------------------
|
||||
|
|||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 3 Всего: 172 |
У меня щас крыша поедет ![]() -------------------- |
|||
|
||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Потому что тебе придется раздавать его всем желающим из той первой функции где ты его получил, или строить класс-раздаватель линка ![]() Это сообщение отредактировал(а) chipset - 2.4.2005, 11:04 --------------------
|
||||
|
|||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 3 Всего: 172 |
Ну кто мешает тебе убрать этот нул и возвращать линк ВСЕ ВРЕМЯ? То один вариант, полезный в определенных случаях, если тебе нужен синглтон из 10 классоб, - ПОЖАЛУЙСТА, кроме того, что в таком дизайне возникают сомнения, других возражений нет... -------------------- |
|||
|
||||
chipset |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Я так и делаю.. ![]()
Ну, да, Александреску вообще слабенький программист, чё он лезет- кто знает... Это сообщение отредактировал(а) chipset - 2.4.2005, 11:10 --------------------
|
||||||
|
|||||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 3 Всего: 172 |
Если бы то, что классы должны быть слабо связаны, придумал я, я бы еще понял твои слова, но это вообще-то обычная вещь в ООП; Фаулера, Купера и тысячи других тоже трудно причислить к соплякам... -------------------- |
|||
|
||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
А теперь представь, что тебе нужно будет добавить ещё один класс в дизайн который юзает синглетон и тебе придется сразу закладывать в его конструктор параметр а-ля "Singleton *single", ну разве красивое решение? Хотя это уже дело вкуса..
Кстати, для организации классов в кучки которые пользуются одним синглетоном существуют неймспейсы. Добавлено @ 11:20
А я как-то не вижу что доступ к синглетону со всех классов влияет на связь оных классов в увеличивающем смысле. Скорее уж наоборот, передача другим классам линка на синглетон ещё более их связывает. Это сообщение отредактировал(а) chipset - 2.4.2005, 11:21 --------------------
|
||||
|
|||||
Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 3 Всего: 172 |
Первая стадия - это стадия проекторования. И классы в неймспейсы объединяют не на основании того, что всем им нужен один синглтон.
А доступ часто дается для того, чтобы сохранить ссылку в поле объекта. Да фих с ним... Просто есть еще один хороший принцип ООП - принцип ответственности за что-то одно (Single Responsibility Principle). То значит, что синглтон, как и любой другой класс, должен быть ответственен за что-то одно. Раз это синглтон, то это значит, что вообще критично, чтобы такой объект был один. Потому чаще всего он не будет нужен в бог знает каких методах непонятно каких классов. -------------------- |
||||
|
|||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Нет конечно. Хорошо, возьмем конкретный пример синглетона: Logfile. Какова по твоему область действия этого синглетона? Это сообщение отредактировал(а) chipset - 2.4.2005, 11:33 --------------------
|
||||
|
|||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 3 Всего: 172 |
Логгер делают доступным везде - см. статик кейворд. Но конкретные логгеры вообще-то реализуют как хотят, не обязательно синглтоном. Можно просто хранить именованные логгеры в статик векторе, и ничего страшного не произойдет, если ты сделаешь не один логгер а пять. К тому же все-таки это скорее средство дебаггинга и аудита, учитывать которое в дизайне некритично. -------------------- |
|||
|
||||
chipset |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Обычно один файл для лога, или N их создается, все равно, доступ к ним ОДИН.
См. замечание насчёт файла, следовательно глупо делать вторую копию логгера. Это сообщение отредактировал(а) chipset - 2.4.2005, 11:45 --------------------
|
||||||
|
|||||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 3 Всего: 172 |
А если логгеры в консоль пишут или в разные сокеты/файлы? -------------------- |
|||
|
||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Все равно, открываются они ОДИН РАЗ, все аутпуты, т.е. эдакий логговой аутпут программы. Это пофиг, важно что так будет удобнее посылать сообщения для логгера, ОДНОМУ логгеру.. Это сообщение отредактировал(а) chipset - 2.4.2005, 11:49 --------------------
|
||||
|
|||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 3 Всего: 172 |
а если я хочу разные логгеры, так чтобы я мог вызвать в коде один логгер и писать в него, не указывая каждый раз что мне нужен именно логгер для сокета или логгер для записи в файл с ИНФО а не ЕРРОРами? У тебя получается универсальный логгер на все случаи жизни, а это плохо. -------------------- |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |