构图与多个单身人士

时间:2013-03-26 07:36:19

标签: java design-patterns architecture

我正在编写桌面MMO游戏,我想咨询架构问题。我有像NetworkManager,ClientWindow,CachingTextureAtlas这样的类,它们只在一个游戏实例中需要,这是我的问题:让它们成为单身人士是否正确?如果是的话,它将是一种通过全局类进行的交互,从设计的角度来看这是不好的,因为在我看来,如果不是我们将在外观中组合它们,我们将不得不将这些全部传递给构造函数太多的课程也不方便。什么是更好的选择?

1 个答案:

答案 0 :(得分:5)

应谨慎使用单身人士(几乎从不)。我见过很多地方,最近的sceanrio是hibernate会话工厂,最初我们认为单个实例应该没问题,但后来遇到了多个实例的场景,最终重构了代码。 其他问题是如果你正在为你的代码编写单元测试,那么对于依赖于这些单例类的所有类来说,这将是一场噩梦。

其中一个解决方案可能是注入一种可以为您提供这些实例的工厂/它为您提供一种间接性并避免直接耦合。另一种方法是拥有一个容器(例如pico容器)并注入构造函数依赖项,这也是你所指出的。