В моем игровом движке, написанном на C ++, я ' Мы отошли от классической иерархической системы сущностей и построили систему на основе компонентов. Это работает примерно так:
Сущность - это просто контейнер для компонентов. Вот некоторые примеры компонентов: Point, Sprite, Physics, Emitter.
Каждая сущность может содержать не более одного компонента каждого типа. Некоторые компоненты зависят от других, например Physics и Sprite зависят от Point, потому что им нужна позиция и угол, предоставляемые им.
Итак, с системой компонентов все работает нормально, но теперь у меня проблемы с реализацией более специализированных объектов, например:
Теперь я могу легко решить эту проблему с помощью наследования. Просто извлеките камеру из объекта и добавьте дополнительные функции и элементы масштабирования. Но это просто неправильно.
Мой вопрос: