![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
||
|
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
Паттерны проектирования - готовые элементы дизайна архитектуры программы, из которых дизайнер получает возможность строить программы как-бы блоками. Пример паттерна: паттерн синглетон это, если я правильно помню, класс которого всегда имеется только один обьект во всей программе. Более подробно их описывает Domestic Cat здесь, ну а настоящий классик - Александреску со своим Modern C++ Design.
ИМХО, весьма удобная штука, заюзываю их... Ко всему прочему, облегчает общение нескольких программеров между собой вводя некого рода словарь ![]() Выкладываем свои мнения ![]() --------------------
|
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 3 Всего: 172 |
Ты это... неправ ![]() -------------------- |
|||
|
||||
Fire-Plug |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 15.3.2005 Репутация: -1 Всего: 0 |
Это правда, но читать Александреску намного легче, чем Гамму со товорищи... ![]() --------------------
Объясни другому - поймешь сам (Народная примета) |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
Domestic Cat, то разве не для Java?
![]() Это сообщение отредактировал(а) chipset - 31.3.2005, 08:35 --------------------
|
|||
|
||||
np9mi7 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 553 Регистрация: 17.8.2003 Где: Volgograd, Russia Репутация: 5 Всего: 10 |
Domestic Cat привел паттерн как раз из банды четырех, а Александреску посмотрел на проблему намного шире... по сути,
|
|||
|
||||
Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 3 Всего: 172 |
Если она была издана в 1995 году, то какая Java? ![]()
Ну создай мне хотя бы пару объектов, потом посмотрим... -------------------- |
||||
|
|||||
Fire-Plug |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 15.3.2005 Репутация: -1 Всего: 0 |
Объект-то один, да вот доступиться к нему можно только однажды. Почему?
Да потому, что это не ф-ция-создатель, а просто катастрофа! Только один раз ссылку на instance возвращает, а то всё время null! Будет вам GPF(exception 0x00000005) вместо синглтона или Ява-машина все исключительные ситуации перехватывет? Этот оператор:
надо для для врагов оставить и описать как принципиальную особенность Ява-реализации синглтона. А у Александреску, кстати, в примере реализации синглтона им. Скотта Мэйерса - деструктор private. Что будет при компиляции? --------------------
Объясни другому - поймешь сам (Народная примета) |
||||||||
|
|||||||||
chipset |
|
||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
Я не уверен, но вроде бы.. Синглетон, как я его представляю:
Тогда придется все переменные обьявлять статичными. Это сообщение отредактировал(а) chipset - 31.3.2005, 09:27 --------------------
|
||||||||
|
|||||||||
Fire-Plug |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 15.3.2005 Репутация: -1 Всего: 0 |
Как, неужели, все методы статичны? Дык такой паттерн имеет совсем другое название и по инициативе того же Скотта Мэйерса назван монотип, т.к. все члены могут быть тоже только статичны. А как же single-то, если объектов много? Как-то нелогично. Стоит ли тогда паттерн городить да ещё книжки заумные писать? Вот к примеру:
ЗЫ: Может ты фабрику объектов имеешь в виду? --------------------
Объясни другому - поймешь сам (Народная примета) |
||||
|
|||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 3 Всего: 172 |
Вообще-то зависит все от того, какой синглтон нужен. Можно на все запросы возвращать ссылку на один и тот же объект, можно дать доступ один раз, как в приведенном выше случае. Никаких иксепшнов тут не будет, если клиент попросил синглтон однажды. Чаще всего, если синглтон просят два раза - это сигнал бага в коде, потому лучше вернуть на такой запрос null или напрямую бросить иксепшн - легко дебаггить будет. -------------------- |
|||
|
||||
np9mi7 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 553 Регистрация: 17.8.2003 Где: Volgograd, Russia Репутация: 5 Всего: 10 |
а что если нужны параметры при конструировании... да ладно ладно, если синглтон - это объект который на протежении всей жизни только один, то тогда это решение вполне удовлетворительно (хоте не мне это говорить).... Говорю Александреску всю эту тему развил до более общего понятия. Domestic Cat, согласись что у грека он намного более функционален? Ладно, это вопрос вкуса ![]()
Это сообщение отредактировал(а) np9mi7 - 31.3.2005, 09:41 |
||||
|
|||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
Функция initialize передающая параметры в конструктор? --------------------
|
||||
|
|||||
np9mi7 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 553 Регистрация: 17.8.2003 Где: Volgograd, Russia Репутация: 5 Всего: 10 |
эй!
chipset, до понедельника, все будет! ![]() |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 3 Всего: 172 |
Паттерн - это форма организации классов, там нет жесткой структуры - сделай вот так и все. В принципе, мзохно и в самом конструкторе смотреть статическое поле, вести счет количеству объектов, если больше одного, бросать иксепшн из конструктора. В Java есть анонимные классы, синглтоны по определению, без каких-либо усилий. Вообще я конкретной реализации паттернов в уме не держу, только класс диаграммы. -------------------- |
|||
|
||||
Fire-Plug |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 15.3.2005 Репутация: -1 Всего: 0 |
Будет ни одного объекта Singleton, т.к. ф-ция getInstance() - нестатический метод класса, а конструктор private. Нужен статический метод getInstance() и статический же член Singleton *_instance. Т.е.
--------------------
Объясни другому - поймешь сам (Народная примета) |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |