Форум: "Потрепаться";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];
Вниз---|Ветка была без названия|--- Найти похожие ветки
← →
vuk (2003-03-24 11:17) [120]to Romkin:
>в конструкторе я ведь могу проверить переменную и выдать
>исключение, если уже есть объект
О! Тут-то собака и порылась! Если Вы возбуждаете исключение в конструкторе, то последствия, надеюсь, понятны - нужно ловить исключения, нужна глобальная общедорступная переменная или функция и т.п. А перекрытие NewInstance/FreeInstance дает простой способ - делается вызов конструктора, но возвращается всегда один и тот же объект. И никаких исключений.
>Плюс - все как от Борланд
Еще раз. Borland не делал синглетон из TPrinter, т.к. создать другие экземпляры можно.
← →
REA (2003-03-24 11:25) [121]А я не понял в чем смысл этого "синглетона"? Есть глобальная переменная (хорошо бы еще только для чтения, или объект класса SystemObjects или WindowsObjects) и не надо ее трогать. Тут конечно может быть возражение, что не надо память засорять, пока оно не используется, но логичнее (наверно) выделять ресурсы при первом вызове.
Кстати на мое замечание, что Integer это generic тип не отреагировали - раньше он был короче, а позже будет длиннее.
>а). Что такое объекты ядра? Перечислите несколько функций, в которых они используются.
По памяти и не вспомню, что из них объекты ядра (File Handelrs, семафоры, мьютексы, пайпы, waitable timers, Atoms, Timer Queue? Много еще чего наверно.).
Хотя уж точно не GDI и не USER. А что - есть те кто все объекты ядра вспомнили? Надо еще уточнить, что OS=Windows.
← →
vuk (2003-03-24 11:32) [122]to REA:
>А я не понял в чем смысл этого "синглетона"?
Никогда не сталкивались с ситуацией, когда у класса должен быть только один экземпляр, доступный во многих местах?
← →
REA (2003-03-24 11:40) [123]Сталкивался. Делал глобальную переменную. Не сталкивался с ситуацией, что надо это экземпляр создавать много раз.
← →
vuk (2003-03-24 11:46) [124]to REA:
>Делал глобальную переменную.
Которая не защищена от доступа извне? Тогда реальной гарантии несоздания нескольких экземпляров нет.
← →
Romkin (2003-03-24 11:52) [125]2vuk Application - что, тоже другие экземпляры кто-то делал?
Насчет исключения в конструкторе - просто программист должен знать, что он и где
← →
vuk (2003-03-24 12:00) [126]to Romkin:
>Application - что, тоже другие экземпляры кто-то делал?
Но защита от дурака (точнее - от шибко умного) не помешала бы.
>просто программист должен знать, что он и где
А ему не все равно, позволяет класс создавать больше одного экземпляра или нет?
← →
REA (2003-03-24 12:03) [127]>Которая не защищена от доступа извне?
По большому счету нет ничего защищенного, а защита просто от незнания внутреннего устройства объекта (маскировка того что переменная глобальная). С другой точки зрения, если не знать, что это синглетон, то можно делать ложные предположения о поведении объекта, что не менее опасно, чем иметь глобальную переменную (которая и описана в документации, как глобальная).
← →
Alibaba (2003-03-24 12:07) [128]Ну Вы, блин, даете... :)
← →
vuk (2003-03-24 12:17) [129]to REA:
>можно делать ложные предположения о поведении объекта, что не
>менее опасно, чем иметь глобальную переменную
Предположения, однако, не влияют на правильность работы синглетона, в отличие от наличия глобальной переменной.
А ложные предположения можно делать и в другом случае. Например, почему для создания экземпляра нужно не конструктор вызывать, а что-то другое? :o)
← →
REA (2003-03-24 13:13) [130]Для создания именно "экземпляра", а не ссылки на экземпляр.
Потому что для вызова функции используются (), а не {} - потому что все так привыкли. Для получения ссылки логичнее использовать специализированную функцию: GetMyGlobalObjectReference, если уж не давать доступ по записи к переменной. А вообще можно было и в языке сделать ReadOnly модификатор переменной.
← →
blackman (2003-03-24 13:32) [131]просто программист должен знать, что он и где и почем м зачем
Ну Вы, блин, даете... :)
← →
vuk (2003-03-24 13:49) [132]to REA:
>Для создания именно "экземпляра", а не ссылки на экземпляр.
Понятия "создание ссылки на экземпляр" не существует. А конструктор, кстати, возвращает эту самую ссылку. Какая, скажите мне, клиенту разница, откуда она взялась? Он захотел экземпляр - он его получил.
Кстати, а почему экземпляр у Вас в кавычках?
← →
REA (2003-03-24 15:11) [133]Вобщем дискуссия зашла в тупик и сильно отклонилась от топика :)
Предлагаю каждому остаться при своем мнении.
Страницы: 1 2 3 4 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];
Память: 0.75 MB
Время: 0.014 c