Здравствуйте, гость ( Вход | Регистрация )
|
Litkevich Yuriy |
4.5.2008, 20:04
Сообщение
#1
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Подбираю шаблон проектирования для моей задачи.
Задача такая: Есть программа типа MDI, хочу сделать в ней многопользовательскую работу, в одно время работает только один пользователь. В зависимости от группы пользователя ему становится доступным определенный, для данной группы, набор пунктов меню. Я это так прикинул: 1-Нужно хранить переменную, например, uid, в которой указан код текущего пользователя/группы. 2-Нужен диалог ввода имени и пароля, который будет где-нибудь искать есть ли такая пара логин/пароль. Если есть, то устанавливать найденное значение в переменной uid. Если нет - ругнутся на пользователя. 3-Основное окно программы получает от диалога результат: ОК-пользователь найден, надо обновить меню, НЕ ОК - пользователь не найден, ничего не делать. Но я подумал, что какому нибудь еще окну может понадобится знать uid, и поэтому я думаю, что простая глобальная переменная будет неудобна, и хочу сделать класс, в котором будет реализовандиалог авторизации и прочие штуки в том числе статическая переменная uid, а в других классах динамически создавать экземпляры, если сделать этот класс как "одиночку", то uid должен быть общим для всех экземпляров. ---- Вот такие мысли в моей голове, может уже есть для подобной задачи отработаный подход, и моя мысль слишком замудренная? Просвятите пожалуйста. |
|
|
|
![]() |
|
ViGOur |
5.5.2008, 10:39
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40
|
Для этого и существуют такие директивы препороцессора как:
|
|
|
|
Litkevich Yuriy Шаблон проектирования Singleton (одиночка) 4.5.2008, 20:04
ViGOur Для твоей задачи можно использовать как глобальную... 4.5.2008, 21:12
Litkevich Yuriy Цитата(ViGOur @ 5.5.2008, 1:12) Singleton... 4.5.2008, 21:19
Litkevich Yuriy слушай а функции InitInstance() и FreeInstance(); ... 5.5.2008, 8:54
ViGOur Угу, именно так, только не потому, что статические... 5.5.2008, 9:11
Litkevich Yuriy еще вопрос по теме задачи:
В голове крутится вариа... 5.5.2008, 9:16
ViGOur Да никаких последствий вроде не должно быть. 5.5.2008, 9:27
Litkevich Yuriy положим "одиночку" я кладу в два файла s... 5.5.2008, 10:08
ViGOur Принципиальной разницы не вижу, я обычно это делаю... 5.5.2008, 10:20
Litkevich Yuriy просто я подумал, что если в хидере будет, то он н... 5.5.2008, 10:27
Litkevich Yuriy хе, правильно хидер то один и тот же, туплю 5.5.2008, 10:42
Tonal Обычно синглетон (одиночка) без FreeInstance и без... 5.5.2008, 11:02
Litkevich Yuriy а зачем вот эта строка:
Цитата(ViGOur @ 5.5.2... 5.5.2008, 11:12
Andrew Selivanov Цитата(Litkevich Yuriy @ 5.5.2008, 11:42)... 5.5.2008, 11:19
Litkevich Yuriy у меня есть Эрих Гамма, там тоже есть примеры, но ... 5.5.2008, 11:25
ViGOur Цитата(Litkevich Yuriy @ 5.5.2008, 12:12)... 5.5.2008, 11:44
Litkevich Yuriy да, про конструктор/деструктор я понял, это чтоб н... 5.5.2008, 11:45
Litkevich Yuriy Например, в Qt'ях я применяю такую строку:
QTe... 5.5.2008, 12:29
ViGOur Тот пример, что ты привел, обычная статическая фун... 5.5.2008, 12:42
Litkevich Yuriy =1=
ViGOur, у меня компилер ругается на такую стро... 14.5.2008, 10:29
Andrew Selivanov Цитата(Litkevich Yuriy @ 14.5.2008, 11:29... 14.5.2008, 11:11
ViGOur Цитата(Andrew Selivanov @ 14.5.2008, 12:1... 14.5.2008, 11:36
Litkevich Yuriy тогда вот так ругается :
Цитатаsingleton.h:26: war... 14.5.2008, 11:43
LuckLess return *this; 14.5.2008, 11:44
Litkevich Yuriy LuckLess, да вот так:
Session& operator=(c... 14.5.2008, 11:46
LuckLess еще такой вариант синглтона..
template <class ... 14.5.2008, 11:56
Litkevich Yuriy а для чего int I, она ведь неиспользуется, в шабло... 14.5.2008, 12:08
LuckLess для того чтобы ты мог создать два разных синглтона... 14.5.2008, 14:13
Litkevich Yuriy с каждым днем начинаю понимать пользу от единствен... 16.5.2008, 12:50
Litkevich Yuriy В итоге получилось так:
singleton.h#ifndef SINGLET... 27.9.2009, 21:16
Влад Юрий, по твоей реализации (кстати, практически кла... 27.9.2009, 21:47
Litkevich Yuriy Цитата(Влад @ 28.9.2009, 1:47) 1. констру... 27.9.2009, 23:17
AD Цитата(Litkevich Yuriy @ 28.9.2009, 0:17)... 27.9.2009, 23:56
Влад Не совсем так. Правильный (имхо) пример кода приве... 28.9.2009, 11:23
Litkevich Yuriy Влад, поясни пожалуйста свой код.
И m_cs что тако... 28.9.2009, 18:45
AD Цитата(Litkevich Yuriy @ 28.9.2009, 19:45... 28.9.2009, 20:25
Litkevich Yuriy AD, указатель в его примере - m_me 28.9.2009, 20:29
Влад Ага, этот пример кода выдран с корнем из реально р... 28.9.2009, 20:46
Litkevich Yuriy Цитата(Влад @ 29.9.2009, 0:46) Double-Che... 28.9.2009, 21:13
AD Цитата(Litkevich Yuriy @ 28.9.2009, 22:13... 28.9.2009, 21:16
Litkevich Yuriy ага, уже разобрался, в Вкикпедии прочитал 28.9.2009, 21:59
Влад Гм, ну если уж говорить о кроссплатформе, то наибо... 29.9.2009, 16:23![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 14.12.2025, 12:04 |