Libgdx: 对象创建其他对象

Libgdx: Objects creating other objects

我有一个关于简单游戏架构的一般性问题。 在我的游戏中,我有这些 classes:

  1. Main class 负责绘图和渲染。
  2. 具有一些属性和执行某些操作的 update() 函数的 Ball 对象。

主要 class 有一个包含所有现有球实例的数组,render() 函数负责 运行 通过所有这些实例并调用它们的 update()。 此外,主要 class 具有创建另一个实例的 createBall() 函数。

假设其中一个实例想要在游戏中创建另一个球(通过他的 update())。 哪种方式才是正确的做法:

  1. 每个球都在其构造函数中获取 Main Class 实例(主 class 在创建它时将其自身传递给球)并调用 main.createBall();
  2. 每个球都有一个 "requests" 数组,主 class 读取并理解球想要创建的内容。

这应该是一个一般性问题,因为它定义了实例与主实例通信的方式 class。

谢谢!

从 OOD 的角度来看,我会有第三个 class 知道如何创建球。我会在 Main 中实例化它,然后将它传递给构造函数中的 Ball class。您可以将其称为 class BallFactory。

Ball class 会在想要创建 Ball 时调用 addRequest(),而 Main class 会在准备好进行实际创建时调用 processRequests()。列表本身将保留工厂的私有实现细节,这很好 encapsulation.

这给了我们更好的 separation of concerns

您建议的选项都可以,但从纯面向对象的角度来看它们并不理想,因为它们减少了 Main(选项 1)或 Ball(选项 2)cohesionclass。