在设计新应用程序时,我经常会遇到这个问题。
我将使用一个样本问题来解释这一点。
我正在写简单的游戏,所以我想保留一个球员名单。
我别无选择...
但这是一个全局性的状态
但这很糟糕,因为它是一个单例
这看起来不错,但事实并非如此。
如果游戏之外的任何对象都需要查看
PlayerList
(通常情况)我必须使用上述方法之一才能使Game类在全局范围内可用。
所以我只是在问题中添加了另一层。我实际上什么都没解决。
最佳解决方案是什么?
(当前我使用Singleton方法)
最佳答案
这就是DI容器管理生命周期的原因。就容器生命周期而言,让Playerlist为单例。为您提供组件的完全可测试性,让容器(不是您)弄脏手。
关于dependency-injection - 全局状态和单例依赖注入(inject),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1364227/