У меня есть следующий запрос на разработку инструмента визуального редактирования, написанный на C ++:
- уметь определять объект шаблона (назначать изображение, редактировать вращение / масштаб по умолчанию, редактировать значения свойств по умолчанию)
- иметь возможность размещать экземпляры объекта шаблона в поле зрения
- иметь возможность вносить изменения в объект шаблона (например, другое изображение, изменение поворота, масштабирование, значения свойств) для всех экземпляров, используя новые значения сразу или после нажатия «Применить»
- Исключение: если вращение, масштабирование или какое-либо значение свойства было изменено (переопределено) в экземпляре, оно больше не должно брать это значение из своего шаблона!
Каковы хорошие варианты дизайна для реализации такого отношения шаблон-экземпляр в C ++ с дополнительным условием того, что экземпляры могут переопределять значения шаблона? Есть ли шаблон дизайна для этого?
Я выдвинул несколько идей, но ни одна не показалась мне подходящей. Например, у меня может быть класс TemplateObject и класс TemplateObjectInstance. Посредством отношения 1-ко-многим они «знают» друг друга, и, например, экземпляры могут проверять, переопределено ли свойство локально (существует запись в словаре свойств TemplateObjectInstance), и, если нет, пытается получить значение из своего родительского словаря свойств TemplateObject. вместо. Это решение, которое будет работать достаточно хорошо?
Примечание: этот вопрос , а не о шаблонах C ++.