1

我正在写一个桌面 MMO 游戏,我想咨询一下架构问题。我有诸如 NetworkManager、ClientWindow、CachingTextureAtlas 之类的类,它们仅在游戏的一个实例中需要,这是我的问题:将它们设为单例是否正确?如果是,这将是一种通过全局类的交互,从设计的角度来看,这在我看来并不好,如果不是,我们将把它们组合在一个外观中,我们必须将它们全部传递给构造函数太多的类也不方便。什么是更好的选择?

4

1 回答 1

5

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

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

于 2013-03-26T07:54:35.697 回答