【发布时间】:2013-06-11 15:19:20
【问题描述】:
我有以下类:Main 创建 Game 实例,创建 Player 实例和 World 实例,World 创建 Floor 实例。
现在我想从 Player 调用 Floor 中的一个方法,此时它基本上只是一个 getter,但以后可能会变得更加复杂。解决此问题的最佳方法是什么?在 Game 中创建一个调用 Floor 然后写入玩家的方法?我觉得在 Player 中创建一个新的 Floor 实例是不明智的。 (但实际上并不知道。)而且我认为没有办法直接在我的层次结构中从 Player 调用 game.world.floor?
【问题讨论】:
-
应用程序中是否只有一个
Floor?如果是这样,您将需要研究一种称为单例模式的东西。Floor可以有多个实例,而Player只需要知道他正在使用哪个实例吗?如果是这样,那么您需要将对Floor的引用传递给Player。如果Player必须总是有这样的引用,那么它应该在构造函数中是必需的。 -
它不仅仅是使用语言的机制来允许您调用或不调用方法。了解相关对象之间的自然现实世界关系很重要。这个方法是否也属于
Floor?这个方法有什么作用?它使用了应用程序状态中的哪些项目,以及它发生了什么变化? -
只有一层,所以我研究一下单例模式,谢谢。大卫,我不确定,正如我所说,我相信该方法可能应该在 Game 上使用,但它使用 Floor 设置的值,而 Player 使用它们,目前就这么简单。
-
@David 我认为在这种情况下建议使用单例模式不一定是个好主意。
-
@sdasdadas:您可能是对的,这就是为什么我提供评论而不是答案的原因。如果我们不是在谈论单个实例,而是在谈论更复杂的对象关系,那么我的其他建议可能会有所帮助。这些对象可以携带对彼此的引用,或者根本不相互交互,而是与协调这些交互的
Game交互。