| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Какой паттерн применить |
| Автор: xTr1m 10.2.2010, 09:35 |
| Доброго времени суток. Есть примерно следующая задача: Пользователь нажимает кнопку создать объект, открывается диалог. В этом диалоге можно также создавать объекты, которые будут как атрибуты, и этих атрибутов также можно создать свои объекты. Далее пользователь может нажать ОК или Отмену. Очень не хочется создавать все объекты, а потом их удалять при отмене. То есть получается, что нужно использовать некую схему (универсальную, для любого уровня вложенности), при которой объекты сразу не создаются. Наверняка есть какой-то паттерн, может кто подскажет? |
| Автор: NewDima 10.2.2010, 11:21 |
| Неужели в процессе "создания" объекта он действительно создается? Не проще ли получить всю нужную информацию о требуемом объекте, а потом его уже создать? |
| Автор: dix75 10.2.2010, 17:54 |
а что за объекты |
| Автор: SenkraD 10.2.2010, 18:10 |
| [B]xTr1m, как вариант можно собирать метаданные и только по окончанию, если всё ок, создать обьект. По реализации на ум приходит тотже композитор, а для метаданных, как по мне, лучше всего подойдёт какой-то обьект типа XmlElement[/B] |
| Автор: xTr1m 11.2.2010, 09:45 |
| Насчет композитора, почитал. Сейчас вот обмозговываю как бы его прикрутить =)) Объекты - это объекты базы данных по сути. То есть, скажем, создаем деталь, у нее есть "поддеталь", у которой есть характеристики (тоже объекты). |
| Автор: mes 11.2.2010, 10:02 | ||||
|
| Автор: xTr1m 12.2.2010, 09:25 |
| Насколько я понял, это как раз реализация композитора? Спасибо. |
| Автор: mes 12.2.2010, 10:00 | ||||
Не совсем. Вы вначале озвучили две проблемы
для этого подходит композиция
для этого подходит сбор метаданных и на их основании создавать объекты если нужно. в примере отражены оба подхода, как один из вариантов решения Вашей задачи. P.S. имхо это плохой подохд применять паттерн вслепую, не осознавая, что именно скрыто за ним. |