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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Какой паттерн применить 
:(
    Опции темы
xTr1m
Дата 10.2.2010, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 692
Регистрация: 9.2.2005
Где: Москва

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



Доброго времени суток. Есть примерно следующая задача:
Пользователь нажимает кнопку создать объект, открывается диалог. В этом диалоге можно также создавать объекты, которые будут как атрибуты,
и этих атрибутов также можно создать свои объекты. Далее пользователь может нажать ОК или Отмену. Очень не хочется создавать все объекты,
а потом их удалять при отмене. То есть получается, что нужно использовать некую схему (универсальную, для любого уровня вложенности), 
при которой объекты сразу не создаются. Наверняка есть какой-то паттерн, может кто подскажет?
PM MAIL WWW ICQ   Вверх
NewDima
Дата 10.2.2010, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: нет
Всего: 12



Неужели в процессе "создания" объекта он действительно создается? Не проще ли получить всю нужную информацию о требуемом объекте, а потом его уже создать?
PM ICQ   Вверх
zim22
Дата 10.2.2010, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(xTr1m @  10.2.2010,  08:35 Найти цитируемый пост)
В этом диалоге можно также создавать объекты, которые будут как атрибуты,и этих атрибутов также можно создать свои объекты

паттерн Композитор приходит на ум


--------------------
PM MAIL   Вверх
dix75
Дата 10.2.2010, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(xTr1m @  10.2.2010,  09:35 Найти цитируемый пост)
свои объекты

а что за объекты


--------------------
save your mind
PM MAIL   Вверх
SenkraD
Дата 10.2.2010, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 2
Всего: 23



[B]xTr1m,  как вариант можно собирать метаданные и только по
окончанию, если всё  ок, создать обьект. По реализации на ум приходит тотже композитор,
а для метаданных, как по мне, лучше всего подойдёт какой-то обьект типа XmlElement[/B]



--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
xTr1m
Дата 11.2.2010, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 692
Регистрация: 9.2.2005
Где: Москва

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



Насчет композитора, почитал. Сейчас вот обмозговываю как бы его прикрутить =)) Объекты - это объекты базы данных по сути. То есть, скажем, создаем 
деталь, у нее есть "поддеталь", у которой есть характеристики (тоже объекты).

Это сообщение отредактировал(а) xTr1m - 11.2.2010, 09:45
PM MAIL WWW ICQ   Вверх
mes
Дата 11.2.2010, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

Репутация: 144
Всего: 250



Цитата(xTr1m @  11.2.2010,  08:45 Найти цитируемый пост)
То есть, скажем, создаем 
деталь, у нее есть "поддеталь", у которой есть характеристики (тоже объекты).

Код

class Article 
{
     public:
        virtual ~Article (){}
        ...
};

class ArticleDraft
{
   public:
        virtual ~ArticleDraft (){}
 
        void AddChild (ArticleDraft *);
    
        Article * ProduceAll ()   
        { 
            Article * _this = Produce (NULL);

            for ( ..* it = m_childs.begin(); it != m_childs.end(); ++it) )
               it->Produce (_this); 

            return _this;
        }
        virtual Article * Produce (Article * parent) =0;
        ...
};



--------------------
PM MAIL WWW   Вверх
xTr1m
Дата 12.2.2010, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 692
Регистрация: 9.2.2005
Где: Москва

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



Насколько я понял, это как раз реализация композитора? Спасибо.
PM MAIL WWW ICQ   Вверх
mes
Дата 12.2.2010, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

Репутация: 144
Всего: 250



Цитата(xTr1m @  12.2.2010,  08:25 Найти цитируемый пост)
Насколько я понял, это как раз реализация композитора?

Не совсем. Вы вначале озвучили две проблемы

Цитата(xTr1m @  10.2.2010,  08:35 Найти цитируемый пост)
создавать объекты, которые будут как атрибуты,
и этих атрибутов также можно создать свои объекты.

для этого подходит композиция


Цитата(xTr1m @  10.2.2010,  08:35 Найти цитируемый пост)
То есть получается, что нужно использовать некую схему (универсальную, для любого уровня вложенности), 
при которой объекты сразу не создаются. 

для этого подходит сбор метаданных и на их основании создавать объекты если нужно.

в примере отражены оба подхода, как один из вариантов решения Вашей задачи.

P.S. имхо  это плохой подохд применять паттерн вслепую, не осознавая, что именно скрыто за ним.
smile


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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