Работа по проектированию состоит в том, чтобы представить в описаниях объектов правды о мире, которые соответствуют требованиям системы.В мире «предметов» ОП это факт, что предметы имеют цвет, и это актуально, потому что пользователи заботятся о цвете предмета.Вы бы назвали систему неэффективной, только если она потребляет вычислительные ресурсы, которые ей не нужны .
Итак, для чего-то вроде конфигуратора, тот факт, что у нас есть элементы, ито, что эти элементы имеют свойства, а эти свойства имеют перечисляемый набор возможных значений, звучит как совершенно рациональный дизайн.
Является ли он неэффективным или «раздутым»?Единственное место, в котором я бы усомнился, это явное утверждение, что у предметов есть свойства.Конечно, это так, но это в корне верно для объектов javascript и объектов синтаксического анализа.
Другими словами, вы можете иметь возможность обойтись только с item и несколькими разновидностями propertyOptions: например, Item имеет атрибут с именем "colorProperty«это указатель на экземпляр« ColorProperty »(экземпляры которого имеют свойство name, например« red »,« green »и т. д. и могут описывать другие соответствующие факты, например, более точное описание в форме RGB).
Нет ничего плохого в том, что многие классы представляют соответствующую истину.Сделай это первым.Вы могли бы эмпирически обнаружить, что ваш дизайн слишком ресурсоемкий (я сомневаюсь, что вы будете в этом случае), и в этот момент мы начнем искать читы, которые будут как-то более стройными.Но сначала делай правильно, а потом обманывай, только если надо.