构图与多个单身人士

One*_*mir 1 java architecture design-patterns

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

Ank*_*sal 5

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

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

  • +1表示依赖注入.错过了:) (2认同)
  • 使用Spring DI,您可以随时说明您需要单个实例还是多个实例(singleton vs protytype).春天,Google guice或pico都相对轻巧. (2认同)