我有一个关于简单游戏架构的一般性问题。 在我的游戏中,我有这些类:
- 负责绘制和渲染的主类。
- Ball 对象具有一些属性和执行某些操作的 update() 函数。
主类有一个包含所有现有球实例的数组,render() 函数负责遍历所有这些实例并调用它们的 update()。 此外,主类还有 createBall() 函数,用于创建另一个实例。
假设其中一个实例想要在游戏中创建另一个球(通过他的 update())。 哪种方法是正确的方法:
- 每个球都会在其构造函数中获取主类实例(主类在创建球时将其自身传递给球)并调用 main.createBall();
- 每个球都有一系列“请求”,主类会读取并理解球想要创建的内容。
这应该是一个通用问题,因为它定义了实例与主类通信的方式。
谢谢!
最佳答案
从 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/