Мне просто интересно, насколько семантически правильно использовать черты для построения игровых объектов.С одной стороны, я рассматриваю это как , имеющее отношение (объект имеет компоненты), но с другой стороны, я рассматриваю компоненты как составляющие объект.
Например.У вас есть GameObject.Сам по себе GameObject ничего не делает, но то, что вы в него смешиваете, придает ему дополнительные свойства.Компоненты могут быть HealthComponent (имеет здоровье), PhysicsComponent (имитирует физику), ClickableComponent (можно щелкнуть).
Мне нравится идея использования признаков, потому что все свойства и методы добавляются в исходный объект, и яможно сделать player.getHP
вместо player.getHealthComponent.getHP
.С другой стороны, я считаю странными названия и семантику использования черт.trait HealthComponent extends GameObject
- это не имеет смысла.HealthComponent
принадлежит GameObject, он не соответствует - это отношение , подразумеваемое extend
.Правильно ли я считаю, что черты обычно рассматриваются как специализированные версии родительского класса?Если так, то как бы я назвал что-то вроде вышеуказанного объекта?