Libgdx:创建其他对象的对象

时间:2015-06-10 10:22:34

标签: java android architecture libgdx

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

  1. 负责绘图和渲染的主要班级。
  2. 具有一些属性的ball对象和执行某些操作的update()函数。
  3. 主类有一个包含所有现存球实例的数组,而render()函数负责遍历所有这些实例并调用它们的update()。 此外,主类具有createBall()函数,用于创建另一个实例。

    让我们说其中一个实例想要在游戏中创建另一个球(通过他的更新())。 哪种方式是正确的方法:

    1. 每个球都在他的构造函数中获得Main Class实例(主类在创建时将其自身传递给球)并调用main.createBall();
    2. 每个球都有一系列"请求"主要课程阅读并理解球想要创造的东西。
    3. 它应该是一个通用的问题,因为它有点定义实例与主类通信的方式。

      谢谢!

1 个答案:

答案 0 :(得分:1)

从OOD的角度来看,我有一个知道创造球的第三课。我在Main中实例化它,并将它传递给构造函数中的Ball类。你可以把这个类称为BallFactory。

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

这为我们提供了更好的separation of concerns

你建议的选项都有效,但从纯OO的角度来看,它们并不理想,因为它们减少了Main(选项1)或Ball(选项2)类的cohesion