应用程序启动时的单个符号

问题描述 投票:0回答:1

我正在创建一个小型游戏,我想在其中拥有一个游戏室和一堆游戏。这将是一个春季启动应用程序。因此,我正在考虑在应用程序启动时启动GameRoom。然后,无论何时创建新游戏,我都会将其添加到游戏列表中的游戏列表中。是个好主意吗?还是有潜在的陷阱。

public class GameRoon{

   private static GameRoom instance = null;
   List<Game> games = new ArrayList();

   private GameRoom() {}

   public static GameRoom getIsntance() {
    if(instance == null) {
       instance = new GameRoom();
    }
    return instance;
  }
}

以上是我未完成的单身。。我有2个问题。1.在Spring-boot启动期间启动此程序是一个好主意吗?2.在spring-boot中使用像这样的单例更好还是有更好的方法呢

spring-boot singleton
1个回答
0
投票

单身人士受到了激烈的辩论,您总会发现使用它的原因,而没有使用它的原因。

我认为,如果您的类职责是保持应用程序内部共享的状态(例如,注册表中包含一些数据),我看不到任何问题。很明显,您共享数据,并且必须确保管理并发访问。

Singleton的主要缺点是testing:您具有全局状态,但理想情况下,在单元测试期间,您希望测试某些代码而不依赖Singleton类(而不是模拟对象)。借助Spring,您仍然可以解决此问题:将GameRoom定义为与其他bean一样注入的Spring bean(默认范围为Singleton)。这允许在单元测试期间模拟它,即使在下面有单例行为。

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.