我有一个关于简单游戏架构的一般问题。 在我的游戏中,我有这些课程:
主类有一个包含所有现存球实例的数组,而render()函数负责遍历所有这些实例并调用它们的update()。 此外,主类具有createBall()函数,用于创建另一个实例。
让我们说其中一个实例想要在游戏中创建另一个球(通过他的更新())。 哪种方式是正确的方法:
它应该是一个通用的问题,因为它有点定义实例与主类通信的方式。
谢谢!
答案 0 :(得分:1)
从OOD的角度来看,我有一个知道创造球的第三课。我在Main中实例化它,并将它传递给构造函数中的Ball类。你可以把这个类称为BallFactory。
Ball类会在想要创建Ball时调用addRequest(),而Main类在准备好进行实际创建时会调用processRequests()。列表本身仍然是工厂的私有实现细节,这很好encapsulation。
这为我们提供了更好的separation of concerns。
你建议的选项都有效,但从纯OO的角度来看,它们并不理想,因为它们减少了Main(选项1)或Ball(选项2)类的cohesion 。