我正在编写我最大的C ++程序,使用多个对象来管理Windows(使用Windows API函数),3D引擎(DirectX)以及其他所有必须协同工作的对象他们的任务。
我在组织对象方面遇到了一些问题,因此他们可以智能地互相交流。 当一个对象必须执行操作时,或者更糟糕的是,将参数传递给另一个对象,我很难定义协调和组织代码的最佳解决方案。
以下是一个很好的例子:
正如我所说,在我的程序中,我有两个对象:(1)" windowManager" ,它处理与窗口本身相关的所有操作,以及(2)" rendererManager" 处理我的所有DirectX操作,从初始化到每帧的渲染。
当窗口调整大小时,必须重置DirectX以调整绘图区域,否则图像会被拉伸,因此" windowManager"必须能够订购" rendererManager"重置。
我想不出比创建" rendererManager.Reset()" 方法更好的解决方案,然后为窗口管理器&#34创建2种方法; windowManager.GetRequestRendererReset()" 和" windowManager.SetRequestRendererReset(bool reset)"
当我的窗口调整大小时,对象" windowManager" 调用自己的方法" windowManager.SetRequestRendererReset(true)" 改变他的一个可以从" get方法"查询的论点。 有了这个,在我的主循环中(在main中的无限循环中)我应用了一些验证,例如:
if (windowManager.GetRequestRendererReset()) { // The window has been resized, we need to reset DirectX
rendererManager.Reset(windowManager.GetWindow());
windowManager.SetRequestRendererReset(false);
}
这感觉非常不理想,我觉得有更好的解决方案。 除此之外,我现在需要向我的对象" rendererManager" 发送更复杂的信息,例如在特定位置的图像中写入文本,而没有智能组织我的整个代码可能会变成沼泽。
是否有一些关于如何优化对象之间的交互和通信的指南? 你有一个很好的课程/教程,或者你有良好实践的例子吗?