gpt4 book ai didi

java - Libgdx:创建其他对象的对象

转载 作者:行者123 更新时间:2023-12-01 11:26:52 26 4
gpt4 key购买 nike

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

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

主类有一个包含所有现有球实例的数组,render() 函数负责遍历所有这些实例并调用它们的 update()。此外,主类还有 createBall() 函数,用于创建另一个实例。

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

  1. 每个球都会在其构造函数中获取主类实例(主类在创建球时将其自身传递给球)并调用 main.createBall();
  2. 每个球都有一系列“请求”,主类会读取并理解球想要创建的内容。

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

谢谢!

最佳答案

从 OOD 的角度来看,我会有第三个类(class),知道如何创造球。我将在 Main 中实例化它,并将其传递到构造函数中的 Ball 类。您可以将此类命名为 BallFactory。

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

这给了我们更好的separation of concerns .

您建议的选项都可以工作,但从纯粹的面向对象的角度来看,它们并不理想,因为它们减少了 cohesion主类别(选项 1)或球类别(选项 2)。

关于java - Libgdx:创建其他对象的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30753565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com