crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> подклассы Singlton
call_me_Frank
  опции профиля:
сообщение 25.2.2015, 13:50
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 20.10.2010
Пользователь №: 2129

Спасибо сказали: 0 раз(а)




Репутация:   0  


Привет!

не могу найти примера того, как нужно использовать подклассы Singlton'а Мейерса.
суть задачи проста: нужен абстрактный класс логгера, и несколько его реализаций - для файловой системы, для БД, для консоли и т.д. Конечно, сам Логгер на всю программу должен быть в ед. экземпляре.

Вот чего-то я запутался в этих трех соснах. :blink: Help me, please!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
call_me_Frank
  опции профиля:
сообщение 25.2.2015, 16:17
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 20.10.2010
Пользователь №: 2129

Спасибо сказали: 0 раз(а)




Репутация:   0  


именно!

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

Собственно, я не могу понять: все классы (LOGGER & FILE_LOGGER, DB_LOGGER, ...) должны быть реализованы как Singleton, или не все? если FILE_LOGGER, наследует LOGGER и в классе BASE я использую интерфейс класса LOGGER, значит надо прописать в нем виртуальную ф-ию log(QString), для того, что бы переопределить её в FILE_LOGGER. Но если класс LOGGER является Singlton'ом, то значит ф-ия log() должна быть static...вот какие противоречия роятся у меня в голове :blink:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 25.2.2015, 19:25
Сообщение #3


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Цитата(call_me_Frank @ 25.2.2015, 16:17) *
именно!

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

Собственно, я не могу понять: все классы (LOGGER & FILE_LOGGER, DB_LOGGER, ...) должны быть реализованы как Singleton, или не все? если FILE_LOGGER, наследует LOGGER и в классе BASE я использую интерфейс класса LOGGER, значит надо прописать в нем виртуальную ф-ию log(QString), для того, что бы переопределить её в FILE_LOGGER. Но если класс LOGGER является Singlton'ом, то значит ф-ия log() должна быть static...вот какие противоречия роятся у меня в голове :blink:


В этом случае перечисленные (LOGGER & FILE_LOGGER, DB_LOGGER, ...) должны быть реализациями интерфейса логгирования. Пользователю вообще обычно нет дела, куда пишется, был бы интерфейс, который позволяет это делать.
Интерфейс не всегда означает присутствие виртуальных методов. В терминологии шаблонов - это просто наличие у класса определенных методов/полей.

Опять же, есть вариант при котором могут быть реализованы несколько объектов-одиночек. Каждый из которых будет выполнять свою задачу, либо вариант о котором я уже говорил: наличие некоторого "абстрактного" "устройства" вывода для отправки логов (на диск, в базу, в сеть и тп). Все зависит от целей.

Сообщение отредактировал wiz29 - 25.2.2015, 19:31
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- call_me_Frank   подклассы Singlton   25.2.2015, 13:50
- - Iron Bug   как-то непонятно, чего ты хочешь. singleton всегда...   25.2.2015, 15:18
- - call_me_Frank   я планирую сделать так: наследовать от QObject (ю...   25.2.2015, 15:44
- - Iron Bug   ты пытаешься применить паттерн фабрики к синглтону...   25.2.2015, 15:55
- - call_me_Frank   именно! так я и читаю книжку по паттернам, от...   25.2.2015, 16:17
|- - wiz29   Цитата(call_me_Frank @ 25.2.2015, 16:17) ...   25.2.2015, 19:25
- - call_me_Frank   решил! // .H #ifndef CLASS1_H #define CLAS...   25.2.2015, 17:26
|- - Iron Bug   насчёт решения с классами - какое-то оно странное....   25.2.2015, 19:02
- - call_me_Frank   Вот еще один вариант реализации с помощью шаблонов...   25.2.2015, 18:41
- - wiz29   не совсем понятно, зачем этот огород? qDebug() все...   25.2.2015, 19:11
|- - Iron Bug   Цитата(wiz29 @ 25.2.2015, 21:06) не совсе...   25.2.2015, 19:11
- - call_me_Frank   Постараюсь ответить по-порядку ) Iron Bug, спасиб...   25.2.2015, 22:40
|- - wiz29   Цитата(call_me_Frank @ 25.2.2015, 22:40) ...   26.2.2015, 17:53
- - lanz   ЦитатаПолучаются перекрестные ссылки, и я не нашел...   26.2.2015, 10:06
- - Iron Bug   в случае, если перекрёстные ссылки всё-таки есть (...   26.2.2015, 11:21


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 5.12.2024, 5:16