c – 将绘图窗口“更深”地控制到程序中?

我正在使用SFML 2.3来控制程序中的图形.我需要一个类才能访问窗口,即使该类不是最初创建窗口的类(没有所有权)也可以绘制它.例如. Battle类需要能够绘制战斗场景并操纵角色,但是World类需要在Battle之前和之后的窗口来显示玩家在主游戏中的动作.

如何处理窗口对象?我最初的想法是拥有一个将窗口作为静态成员的GameMaster类.但是,考虑到通常的共识是什么,我认为最好不要错误地使用这种方法.

我意识到我总是可以将窗口的引用传递给需要它的每个类,但这会使所有需要操作窗口的类的构造函数变得非常膨胀.

最佳答案
我担心你必须决定在使用允许访问主窗口的Singleton(GameMaster)之间做出选择,或者使用依赖类对象传递对它的引用.

我个人更喜欢后者(我不会考虑将另一个构造函数参数添加到几个类中作为膨胀),因为类设计的整体灵活性比使用Singleton更好.

您可以考虑将世界级汇编代码外包给单独的Factory class.这个可以将必要的主窗口对象作为成员保存并将其传递给组装世界所需的所有创建的World,Battle等实例,启动分别是游戏任务.

转载注明原文:c – 将绘图窗口“更深”地控制到程序中? - 代码日志