Структура программы: наследования и производные классы - PullRequest
0 голосов
/ 07 августа 2020

Я пишу приложение Direct3D, моя текущая структура программы выглядит следующим образом:

Базовый класс окна, который содержит все данные и функции для взаимодействия с windows api (создание окна, обработка сообщений, основная функция и т. д. c.).

У меня также есть класс Direct3D, производный от window class и содержащий все инициализации по умолчанию Direct3DDXGI), которые я в основном никогда не нужно изменять (например, создание цепочки подкачки, обратных буферов и т. д. c.).

Затем у меня есть Renderer class, который в настоящее время обрабатывает ввод с клавиатуры и мыши, все команды инициализации (сборка root подпись, псо, куча дескрипторов, геометрия, элементы рендеринга и т. Д. c.), Все функции обновления, такие как обновление буферов, и функции рисования. У меня также есть множество вспомогательных классов для управления различными вещами.

Теперь проблема в том, что основное приложение Renderer со временем выросло в размерах вне пропорций, и я хотел бы разделить его на несколько разных классов, например, ввод, инициализация, обновление, рисование и т. д. c.

Как мне это сделать правильно? Очевидным способом было бы просто связать все классы, но это не так элегантно, я бы предпочел, чтобы все они были побочными классами, я мог бы, вероятно, просто наследовать от всех этих классов, но это привело бы к множественному наследованию, которого следует избегать .

Возможно ли, чтобы каждый из этих классов унаследовал от renderer class и чтобы все функции были доступны?

Если я создаю объект одного из классов рендеринга, тогда производные методы недоступны. Должен ли я создавать объект sperate для каждого из этих классов?

Должен ли я просто сделать все эти классы статичными c и просто вызывать методы из них принудительно?

...