Libgdx: 对象创建其他对象
Libgdx: Objects creating other objects
我有一个关于简单游戏架构的一般性问题。
在我的游戏中,我有这些 classes:
- Main class 负责绘图和渲染。
- 具有一些属性和执行某些操作的 update() 函数的 Ball 对象。
主要 class 有一个包含所有现有球实例的数组,render() 函数负责 运行 通过所有这些实例并调用它们的 update()。
此外,主要 class 具有创建另一个实例的 createBall() 函数。
假设其中一个实例想要在游戏中创建另一个球(通过他的 update())。
哪种方式才是正确的做法:
- 每个球都在其构造函数中获取 Main Class 实例(主 class 在创建它时将其自身传递给球)并调用 main.createBall();
- 每个球都有一个 "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。
我有一个关于简单游戏架构的一般性问题。 在我的游戏中,我有这些 classes:
- Main class 负责绘图和渲染。
- 具有一些属性和执行某些操作的 update() 函数的 Ball 对象。
主要 class 有一个包含所有现有球实例的数组,render() 函数负责 运行 通过所有这些实例并调用它们的 update()。 此外,主要 class 具有创建另一个实例的 createBall() 函数。
假设其中一个实例想要在游戏中创建另一个球(通过他的 update())。 哪种方式才是正确的做法:
- 每个球都在其构造函数中获取 Main Class 实例(主 class 在创建它时将其自身传递给球)并调用 main.createBall();
- 每个球都有一个 "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。