Mit*_*tch 6 java singleton dependency-injection guice
我一直都知道Singletons是"糟糕的",但直到现在我已经从C++转向Java,我决定找到解决方法.从一点阅读,我发现工厂或依赖注入可能会完成这项工作,但我想对此进行一些确认.
作为一个例子,我即将编写一个可以存储的AnimationCache单例Map<String, Animation>.不同的类应该能够(基本上)在任何地方访问该类,以便他们可以轻松有效地加载动画.使用DI的等效代码看起来很简单的一个非常简短的例子.
另外,Guice是非网络应用程序DI的良好框架吗?我使用Spring进行Web开发,但我不太确定它是否适用于游戏.
Spring和Guice会很好.我个人更喜欢Guice用于纯粹的依赖注入,但是Spring提供了更多.
代码看起来像这样:
public class AnimationCacheClient {
private AnimationCache cache;
@Autowired // for Spring, or
@Inject // for Guice (but I think Spring also supports it now)
public AnimationCacheClient(AnimationCache cache) {
this.cache = cache;
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
我个人更喜欢构造函数注入,但您也可以使用setter注入或场注入.
但请注意,DI的目的不是为了拥有"轻松的单身人士".它的主要目的是AnimationCacheClient通过能够注入模拟依赖项(这里是一个模拟AnimationCache实例)使代码(在这里)容易单元化.
使用Spring,DI非常简单。使用 @Autowired 注释,您甚至不需要额外的 xml 来连接事物或 setter 方法。类中需要访问以前是您的单例的成员即可。
| 归档时间: |
|
| 查看次数: |
2941 次 |
| 最近记录: |