在设计新应用程序时,我经常会遇到这个问题。
我将使用一个样本问题来解释这一点。

我正在写简单的游戏,所以我想保留一个球员名单。
我别无选择...

  • 在某些类
  • 中使用静态字段



    但这是一个全局性的状态
  • 或者我可以使用单例



  • 但这很糟糕,因为它是一个单例
  • 依赖注入(inject)



  • 这看起来不错,但事实并非如此。

    如果游戏之外的任何对象都需要查看PlayerList(通常情况)
    我必须使用上述方法之一才能使Game类在全局范围内可用。
    所以我只是在问题
    中添加了另一层。我实际上什么都没解决。

    最佳解决方案是什么?
    (当前我使用Singleton方法)

    最佳答案

    这就是DI容器管理生命周期的原因。就容器生命周期而言,让Playerlist为单例。为您提供组件的完全可测试性,让容器(不是您)弄脏手。

    关于dependency-injection - 全局状态和单例依赖注入(inject),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1364227/

    10-16 19:07