将绘图窗口的控制"更深"地传递到程序中?

Kvo*_*the 5 c++ graphics sfml

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

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

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

πάν*_*ῥεῖ 6

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

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


您可以考虑将World类汇编代码外包给单独的Factory.这一次能不能把必要的主窗口对象为成员,并把它传递给所有创建的World,Battle必要的组装等情况World,分别启动游戏的任务.