【发布时间】:2017-07-19 08:01:26
【问题描述】:
背景故事:
目前我有一系列与游戏相关的三个课程。我之前使用 Unity 制作过游戏,您可以使用可在所有代码中访问的功能来访问相机等组件。然而,我当前的设置依赖于每个类的实例在其他类之间发送。请参阅以下内容:
class World{
};
class Game{
Camera* camera;
World* world;
};
class Camera{
Game* game;
World* world;
};
问题:
这是设计不良的结果还是有时像这样的设置 这合理吗?
我是否应该在当前设置上使用静态类,因为它 将澄清代码并且每个类的实例不超过一个 用过吗?
使用静态类有哪些可能的缺点 实例?
编辑:为什么他们需要互相访问。
为什么相机需要世界: 相机需要访问世界,因为世界需要从相机的角度进行渲染。相机根据看到的内容触发世界渲染。渲染是由相机中的各种方法触发的,例如当它移动时。
当相机被绘制时,它会绘制它所看到的东西,例如世界。要绘制世界,相机需要访问世界。
为什么相机需要游戏: 游戏具有诸如 FPS 之类的值,Camera 使用这些值来显示调试信息的叠加。
【问题讨论】:
-
每个类都需要访问整个其他具体类吗?抽象类会更聪明吗?这看起来像是“一切都依赖于其他一切”,而不是 SOLID/fluid/...通常的设计理念
-
我肯定会研究任何缩放/基数问题。你的世界真的只有 1 个摄像头(甚至可能只有 1 个游戏吗?)。回答此类问题有助于塑造您的设计。如果您的世界有超过 1 个摄像头,您的世界(和游戏)如何区分各种摄像头?
-
@franji1 好点。但在这种情况下,我绝对知道每个人只会有一个。
-
@doctorlove 你能澄清一下使用抽象类是什么意思吗?它们确实相互依赖,但没有继承关系。
-
具有纯虚函数的东西 - 然后您可以从每个中公开您想要使用的确切部分。
标签: c++ class oop c++11 static