я в настоящее время я пишу свою самую большую программу на C ++, используя несколько объектов управлять окнами (используя функции Windows API), 3D-движком (DirectX) и другими объектами, которые все должны работать вместе для выполнения своей задачи.
У меня есть проблемы с организацией моих объектов, чтобы они могли разумно взаимодействовать друг с другом.
Когда объект должен выполнять операции или, что еще хуже, передавать параметры другому объекту, Я изо всех сил пытаюсь определить лучшее решение для гармонизации и организации моего кода.
Вот отличный пример:
Как я уже сказал, в моей программе у меня есть 2 объекта: (1) «WindowManager» который обрабатывает все операции, связанные с самим окном, и (2) «RendererManager» который обрабатывает все мои операции DirectX, от инициализации до рендеринга каждого кадра.
Когда размер окна изменяется, DirectX должен быть сброшен для регулировки области рисования, в противном случае изображение растягивается, поэтому «windowManager» должен иметь возможность заказать «rendererManager» для сброса.
Я не мог придумать лучшего решения, чем создать «RendererManager.Reset ()» метод, затем 2 метода для оконного менеджера «WindowManager.GetRequestRendererReset ()» а также «windowManager.SetRequestRendererReset (bool reset)»
Когда мое окно изменяется, объект «WindowManager» вызывает свой собственный метод «WindowManager.SetRequestRendererReset (правда)» изменить один из его аргументов, который может быть запрошен из «метода get».
С этим в моем основном цикле (в бесконечном цикле в главном) я применил некоторую проверку, такую как:
if (windowManager.GetRequestRendererReset()) { // The window has been resized, we need to reset DirectX
rendererManager.Reset(windowManager.GetWindow());
windowManager.SetRequestRendererReset(false);
}
Это кажется очень неоптимальным, и я чувствую, что есть лучшее решение.
В дополнение к этому мне теперь нужно отправить более сложную информацию на мой объект «RendererManager», например, текст, который нужно написать на изображении в определенном месте, и без интеллектуальной организации весь мой код мог бы стать болотным.
Существуют ли рекомендации по оптимизации взаимодействия и взаимодействия между объектами?
У вас есть хороший урок / учебник по этому поводу, или у вас есть примеры хороших практик?
Задача ещё не решена.
Других решений пока нет …