Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [опрос]Паттерны проектирования 
:(
    Опции темы
 
Используете ли вы паттерны проектирования в своих программах?
Да [ 20 ]  [43.48%]
Нет [ 8 ]  [17.39%]
Нет, но хочу [ 10 ]  [21.74%]
Что это? [ 8 ]  [17.39%]
Всего проголосовавших: 46
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
chipset
Дата 3.4.2005, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата(np9mi7 @ 2.4.2005, 22:06)
, а instance() что тебе возвращает? Ссылку на объект? Указатель? (ну копию он врятли вернет так как он ОДИН).

Указатель по Александреско на его интерфейс, и?
Цитата(np9mi7 @ 2.4.2005, 22:06)
Как вы собирались разным классам запр. использовать ЛОГ?

Во-первых, это Котъ smile
Во-вторых, просто не давать им линк.
В-третьих, в моем понятии логгер-синглетон должен ловить эксепшны летящие со всего приложения, преобразовывать их в нормальный вид и логить.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
np9mi7
  Дата 3.4.2005, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: 5
Всего: 10



Цитата
Указатель по Александреско на его интерфейс, и?
, по греку ссылка а не указатель. Да и черт с ним, получил интерфейс а объект сам тебе даст или не даст им пользоваться в зависимости от состояния.

Цитата
В-третьих, в моем понятии логгер-синглетон должен ловить эксепшны летящие со всего приложения, преобразовывать их в нормальный вид и логить.
, ну ты поймаешь эксепшен и начнешь его обрабатывать и все. А где тут давать использовать не довать использовать? Непонимаю... smile

Цитата
Во-вторых, просто не давать им линк.
, зачем? Код пишешь ты smile Ну не используй его, а когда нужно не используй. то что получиться что то типа этого уродства:

Код

#include "log_single.h"
// ---------------------------------------------------------
class MEGA_EX
{
    std::string    m_msg;
    public:
        MEGA_EX (const std::string& msg)
        {
            m_msg = msg;
        }
        bool process()
        {
            if(LOG::getInstance())        // если ты мне дал то я все сделаю
            {
                LOG::getInstance()->toLOG(m_msg);
                return true;
            }
            return false;
        }
};
bool MEGA_FUNC () throw (MEGA_EX)
{
    throw MEGA_EX ("shit!");
}
// ---------------------------------------------------------
    
void f()
{
    // ---------------------------------------------------------
    try
    {
        MEGA_FUNC();
    }
    catch(MEGA_EX ex)
    {
        ex.process();
    }
    // ---------------------------------------------------------
}


Это сообщение отредактировал(а) np9mi7 - 3.4.2005, 09:51


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
chipset
Дата 3.4.2005, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата(np9mi7 @ 2.4.2005, 22:37)
, по греку ссылка а не указатель. Да и черт с ним, получил интерфейс а объект сам тебе даст или не даст им пользоваться в зависимости от состояния.

Блин, я это говорил а Кот как раз за противоположную точку зрения smile
Ну да ладно, не впервой.
В общем принцип такой: те кто не должен - не должны получать линк.

Цитата(np9mi7 @ 2.4.2005, 22:37)
, ну ты поймаешь эксепшен и начнешь его обрабатывать и все. А где тут давать использовать не довать использовать? Непонимаю... smile

Тут есть два принципа просто:
1) Каждый класс сам ловит свои исключения и вызывает логгера чтобы добавить туда иксепшн.
2) Глобальный логгер сам ловит исключения.
Цитата(np9mi7 @ 2.4.2005, 22:37)
, зачем? Код пишешь ты...


Нет.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
np9mi7
Дата 3.4.2005, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: 5
Всего: 10



Цитата
Каждый класс сам ловит свои исключения и вызывает логгера чтобы добавить туда иксепшн.
, пусть ошибка обр. методом ошибки!
Код

class EX
{
    std::string    m_msg;
    //------------------------------------------------------
    protected:
        EX (const std::string& msg){m_msg = msg;} // ну раз хочеться....:-)
    public:
        virtual bool process() = 0;
};

сама реализация обработчика будет использовать тот или иной ЛОГ, а клиент ловит ошибку и вызавает обр. и ничего незнает про ЛОГ.

Как тебе это smile


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
chipset
Дата 3.4.2005, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата(np9mi7 @ 2.4.2005, 22:58)
сама реализация обработчика будет использовать тот или иной ЛОГ, а клиент ловит ошибку и вызавает обр. и ничего незнает про ЛОГ.

Ок, но мы ща про паттерны smile


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
np9mi7
Дата 3.4.2005, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: 5
Всего: 10



Цитата
Ок, но мы ща про паттерны smile
, угу smile


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
Domestic Cat
Дата 3.4.2005, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 3
Всего: 172



Вот нафлудили, чуть отошел - сразу про какой-то С++, ЛОГ... smile


--------------------

PM   Вверх
chipset
Дата 3.4.2005, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата(Domestic @ 2.4.2005, 23:02)
Вот нафлудили, чуть отошел - сразу про какой-то С++, ЛОГ... smile

Спокойствие, только спокойствие© Карлсон.
Усё под контролем.
Что у нас осталось невыясненным насчёт синглетона?


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
np9mi7
Дата 3.4.2005, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: 5
Всего: 10



Цитата
Что у нас осталось невыясненным насчёт синглетона?
, наверное сам синглтон (я правильно пишу синглетон это на англ. singleton) не ожидал такого....
НУ да ладно, как насчет статьи в FAQ?


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
Fire-Plug
Дата 3.4.2005, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 15.3.2005

Репутация: -1
Всего: 0



Цитата(Domestic @ 2.4.2005, 09:59)
С этой ссылкой никто не мешает ничего делать - можешь хоть пятьдесят раз ее скопировать.

Это может на Яве принято копировать ссылки. Особенно удобно копировать их делать между объектами разных классов.
Нахрена мне копировать ссылку? С какой целью? Первый вызов ф-ции Instance() создает объект и возвращает его ссылку или указатель. Все остальные вызовы Instance() получают ссылку или указатель на уже готовый объект. Ссылку можно скопировать в некоей локальной области видимости, где предполагается часто использовать объект, чтобы не вызывать Instance() многократно, но это дело вкуса, а не принципа. След. цитата раскрывает причины такого подхода:
Цитата(Domestic @ 2.4.2005, 10:23)
но лучше всего спроектировать так, чтобы синглтон был нужен одному классу

А вот это уже х*рня!!!! Ты где таких архитектурных принципов нахватался? Мне чтобы весь тот bullshit разгребать, к-рый ты авторитетно на голову публики сыплешь, рабочей недели не хватит.
Ты вообще похоже не врубаешься нахрена синглтон нужен. Например, класс реализующий сист. реестр, сист. часы и т.д. и т.п. Ты что, предлагаешь доступ, например, к объекту сист. реестра позволять в строго одном классе-клиенте и больше не моги? Или скажем DB-connection?
Одному отдельно взятому классу синглтон и н*хер не нужен. Достаточно статического члена или статическим указателя-члена, чтобы последний экземпляр объекта-клиента удалил этот единственный эксемпляр.
Кроме того, если некий класс нужен только какому-то одному классу, то этот первый класс можно вообще положить вместе с его объявлением в cpp-файл для класса-клиента и никакая другая зараза даже не узнает, что такой класс существует, т.к. он невидим для остального кода.
"Создать объект обычным образом"- имелось в виду, например, на стеке в блоке: создал, тут же заюзал, а на выходе из блока он сам помер. Не нужна никакакая специальная техники вроде статического указателя, живущего для "мертвого" уже объекта до конца приложения . Этот мертвый указатель или что еще хуже статич. переменная класса - особенно при многократном использовании подобной "техники" - это и есть потеря ресурсов.
--------------------
Объясни другому - поймешь сам (Народная примета)
PM MAIL   Вверх
chipset
Дата 3.4.2005, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата(Fire @ 2.4.2005, 23:39)
А вот это уже х*рня!!!! Ты где таких архитектурных принципов нахватался? Мне чтобы весь тот bullshit разгребать, к-рый ты авторитетно на голову публики сыплешь, рабочей недели не хватит.
Ты вообще похоже не врубаешься нахрена синглтон нужен.


 ! 
 
Спокойно, ведите аргументированный спор, пожалуйста.
Иначе пойдут баны.

Добавлено @ 10:46
Цитата(Fire @ 2.4.2005, 23:39)
Ты вообще похоже не врубаешься нахрена синглтон нужен.

По вашему мнению, люди из GoF(откуда Кот взял код) полное ламо?

Цитата(Fire @ 2.4.2005, 23:39)
Одному отдельно взятому классу синглтон и н*хер не нужен.

Мы не говорим про отдельно взятый класс, мы говорим про ссылку которую можно передавать и через медиатор, таким образом, линк получат только те кому он нужен. Логика в этом есть, хотя лично я и не согласен с таким проектированием.

Это сообщение отредактировал(а) chipset - 3.4.2005, 10:48


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Domestic Cat
Дата 3.4.2005, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 3
Всего: 172



Цитата(Fire @ 3.4.2005, 01:39)
Это может на Яве принято копировать ссылки. Особенно удобно копировать их делать между объектами разных классов.


smile Ну попробуй...

Цитата(Fire @ 3.4.2005, 01:39)
А вот это уже х*рня!!!! Ты где таких архитектурных принципов нахватался? Мне чтобы весь тот bullshit разгребать, к-рый ты авторитетно на голову публики сыплешь, рабочей недели не хватит.


smile smile smile Бедняги ГоФ и Купер... Пришел Fire-Plug и их опустил... Ржунимагу...


Цитата(Fire @ 3.4.2005, 01:39)
Одному отдельно взятому классу синглтон и н*хер не нужен.


Вау! А двум значит нужен??? smile smile
Цитата(Fire @ 3.4.2005, 01:39)
Кроме того, если некий класс нужен только какому-то одному классу, то этот первый класс можно вообще положить вместе с его объявлением в cpp-файл для класса-клиента и никакая другая зараза даже не узнает, что такой класс существует, т.к. он невидим для остального кода.


Ха, а реюзабилити и модульность - для просто так штоль?


Цитата(Fire @ 3.4.2005, 01:39)
"Создать объект обычным образом"- имелось в виду, например, на стеке в блоке: создал, тут же заюзал, а на выходе из блока он сам помер. Не нужна никакакая специальная техники вроде статического указателя, живущего для "мертвого" уже объекта до конца приложения .

С какой стати он должен жить для "мертвого объекта"?

Короче, уважаемый, еще раз в таком тоне позвольшь вести разговор - забаню.


--------------------

PM   Вверх
Fire-Plug
Дата 3.4.2005, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 15.3.2005

Репутация: -1
Всего: 0



Цитата(Domestic @ 2.4.2005, 09:59)
Когда клиент вызывает этот метод, он ожидает, что уникальный объект будет создан. Потому, если метод вызван два раза, то в таком контексте это скорее будет означать баг.
Не вижу никаких противоречий ни с кем.

Кто сказал, что вызывать метод Instance() 2, 3,...,N раз есть "скорее всего" ошибка? Это что, GoF такой принцип вводит и на нем категорически настаивает? Уникальный объект создается однажды. Ссылки можно получать сколько угодно раз покуда нужно с помощью одной и той же ф-ции, к-рая кстати и реализует принцип глобальной точки доступа, а не скопированная кудо-то ссылка, к-рая сама по себе уж точно локальный объект в некоей области видимости.
Цитата(Domestic @ 2.4.2005, 10:23)
Но ИМО, чем большему количеству классов нужна ссылка, тем хуже дизайн.

Не следует путать божий дар с яичницей. А именно яичницу из разных классов, реализующих разные функциональные аспекты приложения с нек-рыми сервисами общего назначения для всего приложения. Именно такие сервисы в кач-ве примеров и приводит Александреску и именно к таким сервисам должен быть обеспечен глобальный доступ из любого места приложения. Именно это и есть архитектурный принцип синглтона, а всё остальные попытки ревизии или недопонимания - просто bullshit.
--------------------
Объясни другому - поймешь сам (Народная примета)
PM MAIL   Вверх
Domestic Cat
Дата 3.4.2005, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 3
Всего: 172



Цитата(Fire @ 3.4.2005, 02:02)
Кто сказал, что вызывать метод Instance() 2, 3,...,N раз есть "скорее всего" ошибка? Это что, GoF такой принцип вводит и на нем категорически настаивает? Уникальный объект создается однажды. Ссылки можно получать сколько угодно раз покуда нужно с помощью одной и той же ф-ции, к-рая кстати и реализует принцип глобальной точки доступа, а не скопированная кудо-то ссылка, к-рая сама по себе уж точно локальный объект в некоей области видимости.

Перечитай то, что написано на предыдущих страницах.

Цитата(Fire @ 3.4.2005, 02:02)
Не следует путать божий дар с яичницей. А именно яичницу из разных классов, реализующих разные функциональные аспекты приложения с нек-рыми сервисами общего назначения для всего приложения. Именно такие сервисы в кач-ве примеров и приводит Александреску и именно к таким сервисам должен быть обеспечен глобальный доступ из любого места приложения. Именно это и есть архитектурный принцип синглтона, а всё остальные попытки ревизии или недопонимания - просто bullshit.

Поздравляю с открытием истинного "архитектурного принципа синглтона". smile smile smile


--------------------

PM   Вверх
chipset
Дата 3.4.2005, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата(Fire @ 3.4.2005, 00:02)
Именно такие сервисы в кач-ве примеров и приводит Александреску и именно к таким сервисам должен быть обеспечен глобальный доступ из любого места приложения. Именно это и есть архитектурный принцип синглтона, а всё остальные попытки ревизии или недопонимания - просто bullshit.

Говорят же.. Александреску не коммитет по стандартизации синглетонов.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1179 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.