Как заменить шаблон дизайна Singleton - PullRequest
0 голосов
/ 30 октября 2019

У меня есть собственная простая реализация Timer, когда таймер создается, он регистрируется в TimerHandler,

Timer::Timer()
: tick_counter_(0),
  target_tick_(0),
  increment_(false),
  started_(false),
  elapsed_(false) {
  handlers::TimerHandler::RegisterTimer(*this);
}

Функция RegisterTimer() является статической, как вы можете видеть, и TimerHandler реализован как синглтон.

Как вы все знаете, это создает проблемы при модульном тестировании! Тестирование класса Timer и класса TimerHandler может быть нормальным и не сложным. Но при тестировании других классов, использующих Timer, это иногда становится сложным.

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

Мое единственное решение, которое у меня естьв настоящее время нужно использовать простое внедрение зависимостей, просто передавая TimerHandler в качестве аргумента везде, где я хочу использовать Timer. Но это сильно загромождает мой код, поэтому я надеюсь, что смогу избежать этого!

1 Ответ

0 голосов
/ 30 октября 2019

Я думаю, что ваш вывод правильный, но он не должен быть беспорядочным. Этот ответ описывает его лучше, чем я: Как избежать безумия конструктора Dependency Injection?

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