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

Поиск:

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


Эксперт
****


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

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



Цитата(Domestic @ 2.4.2005, 00:52)
У тебя получается универсальный логгер на все случаи жизни, а это плохо.


Ну почему же. Взяли, инициализировали аутпут в начале, а потом тока и делай что инфу в его качай...
Помойму мы не туда зашли. Вопрос был: нужен ли логгер всем классам?

Это сообщение отредактировал(а) chipset - 2.4.2005, 11:56


--------------------
Цитата(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
Дата 2.4.2005, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(chipset @ 2.4.2005, 02:55)
Ну почему же. Взяли, инициализировали аутпут в начале, а потом тока и делай что инфу в его качай...
Помойму мы не туда зашли. Вопрос был: нужен ли логгер всем классам?


Предполагать, что всем классам понадобится ОДИН логгер, неправильно. Возможно, им понадобится один и тот же логгер, возможно - несколько разных. Потому здесь скорее подойдет паттерн Фабрика, чем синглтон.


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

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


Эксперт
****


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

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



Так!© Ющенко
Поскольку с логгером тебя не переубедить, что скажешь насчёт Keyboard или Display?

Это сообщение отредактировал(а) chipset - 2.4.2005, 12:00


--------------------
Цитата(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
Дата 2.4.2005, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(chipset @ 2.4.2005, 03:00)
что скажешь насчёт Keyboard или Display?


Дык... а шо ? smile Обработку событий кеиборда ложат обычно в один единственный класс, даже метод.


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

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


Эксперт
****


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

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



А узнавание какая клавиша нажата?
Ок, а такой синглетон как App?
Может лучше пересраховаться (дать всем получать _instance, а не только избранным) чем недосраховацца?


Это сообщение отредактировал(а) chipset - 2.4.2005, 12:07


--------------------
Цитата(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
Дата 2.4.2005, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(chipset @ 2.4.2005, 03:07)
Ок, а такой синглетон как App?
Может лучше пересраховаться (дать всем получать _instance а не только избранным) чем недосраховацца?

Перебирать до утра можно smile Есть случаи, когда хорошо дать ссылку на синглтон любому желающему; есть случаи когда наоборот, нужно ограничить круг клиентов. Последний случай более подходит для кода, написанного тобой, первый - для стандартных библиотек. Такша давай заканчивать, а то я спать хочу, третий час ночи smile


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

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


Эксперт
****


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

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



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

Цитата(Domestic @ 2.4.2005, 01:12)
Есть случаи, когда хорошо дать ссылку на синглтон любому желающему; есть случаи когда наоборот, нужно ограничить круг клиентов. Последний случай более подходит для кода, написанного тобой, первый - для стандартных библиотек.

ОК! smile

Цитата(Domestic @ 2.4.2005, 01:12)
Такша давай заканчивать, а то я спать хочу, третий час ночи smile

Ок smile Интересно, мне всю ночь будет синглетон прячущий инстанс за пазуху и смотрящий жалобными глазами на другие классы, будет сниться? smile

Это сообщение отредактировал(а) chipset - 2.4.2005, 12:40


--------------------
Цитата(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
Дата 2.4.2005, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(chipset @ 2.4.2005, 03:15)
смотрящий жалобными глазами

Нет, скорее "смотрящий жабными глазами" smile


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

PM   Вверх
np9mi7
Дата 2.4.2005, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
Предполагать, что всем классам понадобится ОДИН логгер, неправильно. Возможно, им понадобится один и тот же логгер, возможно - несколько разных. Потому здесь скорее подойдет паттерн Фабрика, чем синглтон.
, хотел спросить, а как они определяют какой им ЛОГ нужен? Или это определяется кем то внешним?

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

Если ЛОГ синглтон, то тогда он действительно ОДИН, и все будут писать только в него, если необходимо предусмотреть возможность нескольких ЛОГов, то, на мой взгляд, можно применить паттерн: STRATEGY (описан в банде четырех).

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

Ну например: в случае простого win nt сервиса, можно использовать синглтон, те один ЛОГ который пишет в Aplitation Event, в случае мего сетевого приложения, который должен определять, что за ошибка, кого уведомить, то тут уместен паттерн STRATEGY.

А вы как считаете?

Цитата
Есть случаи, когда хорошо дать ссылку на синглтон любому желающему; есть случаи когда наоборот, нужно ограничить круг клиентов. Последний случай более подходит для кода, написанного тобой, первый - для стандартных библиотек.
, интересно посмотреть на реализацию этого ограничения на с++, если метод getInstance() открыт. че приватом делать и рожать друзей? или я чего не понимаю smile


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


Эксперт
****


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

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



Цитата(np9mi7 @ 2.4.2005, 03:07)
Если самому клиенту пофиг куда писать свой ЛОГ, то тогда имеет смысл чтоб ЛОГ настраивал кто - то другой, а клиент общался с ним через единый интерфейс.

Он настраивается при инициализации.. smile
Цитата(np9mi7 @ 2.4.2005, 03:07)
, интересно посмотреть на реализацию этого ограничения на с++, если метод getInstance() открыт. че приватом делать и рожать друзей? или я чего не понимаю smile

Ну за што мы тут такой флейм развели smile
Просто у Кота такая реализация getInstance:
Код

  public static Singleton getInstance()
    {
        if (instance == null) 
               instance = new Singleton();
        else return null;
        return instance;
    }

Таким образом, он возвращает линк только один раз и создается тут же.. Во-второй, третий, N-ый раз возвращается null. Гемморой заключается в бережном хранении линка и передаче его только "избранным".
ЗЫ. А у меня уже.. хотя нет, ещё 4 утра smile

Это сообщение отредактировал(а) chipset - 2.4.2005, 14:33


--------------------
Цитата(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
Дата 2.4.2005, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
Он настраивается при инициализации.. smile

ты наверное это имеешь ввиду
Код

instance = new Singleton();
, а что если LOG - ов , как писал Domestic Cat, может быть много??? Тогда вероятно таким макаром тебе придеться либо наражать много синглтонов разных видов, которые и будут настраиваться через инициализацию поскольку вот такая штука уже работать не будет:
Код

class LOG 
{
          
            public:
                       virtual bool 2Log() = 0;
};
class txt : public LOG
{
            public:
                      virtual bool 2Log();
};

и ты не сможешь создать
Код

instance = new LOG();
, он же абстракный! Тогда, лучше говорю использовать STRATEGY вместо синглтон!


ps че хоть пытаемся решить smile


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


Эксперт
****


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

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



Цитата(np9mi7 @ 2.4.2005, 06:23)
, а что если LOG - ов , как писал Domestic Cat, может быть много???

По моей версии, может быть много ФАЙЛОВ или консолей, или ещё чего-нибудь, но они все хранятся как аутпуты Log'a. Это не та задача что мы решаем, кстати.

Цитата(np9mi7 @ 2.4.2005, 06:23)
ps че хоть пытаемся решить smile

Пытаемся разобраться, что лучше:
а) Возвращать указатель на синглетон через getInstance всё время.
б) Возвращать только первый раз, потом передавать ссылку только избранным.
ЗЫ. У меня уже 7 часов.


--------------------
Цитата(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
Дата 2.4.2005, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
но они все хранятся как аутпуты Log'a
, это как, код, хоть чуть чуть smile


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


Эксперт
****


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

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



Цитата(np9mi7 @ 2.4.2005, 06:58)
это как, код, хоть чуть чуть smile

Просто map<fstream,fileid>, в простейшем варианте..



--------------------
Цитата(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
Дата 2.4.2005, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(chipset @ 2.4.2005, 08:29)
По моей версии, может быть много ФАЙЛОВ или консолей, или ещё чего-нибудь, но они все хранятся как аутпуты Log'a. Это не та задача что мы решаем, кстати.


Чипсет, иметь один логгер плохо, потому, что это плохо smile Во-первых, он будет содержать в себе логику работы с файлами, сокетами, консолью и еще бог знает чем, а это напрямую нарушает SRP. Во-вторых, логгер обычно настраивают на вывод определеноого типа мессаг, например, я хочу писать в лог файл только все, что выше SEVERE, а в консоль выводить начиная с INFO. У тебя не класс, а монстр получится.


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

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.1035 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


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

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