синглтон при загрузке приложения - PullRequest
1 голос
/ 24 апреля 2020

Я создаю небольшую игру, в которой я хотел бы иметь игровую комнату и кучу игр в игровой комнате. Это будет приложение с весенней загрузкой. Поэтому я думал о запуске GameRoom в начале приложения. Затем, всякий раз, когда создается новая игра, я добавляю ее в список игр в игре roon. Это хорошая идея? Или есть какие-нибудь потенциальные подводные камни.

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. Это хорошая идея, чтобы начать это во время весенней загрузки? 2. Лучше ли использовать подобный синглтон в Spring-Boot или есть лучший способ сделать это

1 Ответ

1 голос
/ 24 апреля 2020

синглтон широко обсуждается, и вы всегда найдете причины для его использования, а не для.

По моему мнению, если ваша классовая обязанность состоит в том, чтобы удерживать состояние (например, реестр с некоторыми данными), которое совместно используется в приложении, я не вижу никаких проблем.
Ясно, что вы делитесь данными и должен обязательно управлять параллельным доступом.

Основным недостатком Singleton является testing : у вас есть глобальное состояние, но в идеале во время модульного тестирования вы хотите протестировать некоторый код, не полагаясь на singleton class (вместо этого фиктивное).
Вы все еще можете решить эту проблему благодаря Spring: определите GameRoom как Spring bean (область по умолчанию - Singleton), который вводится как любой другой bean. Это позволяет имитировать его во время модульного тестирования, даже если под ним присутствует одноэлементное поведение.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...