首页 > 解决方案 > 如何替换单例设计模式

问题描述

我有自己的简单Timer实现,当创建计时器时,它会在 a 处注册自己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. 但这会使我的代码非常混乱,所以我希望能够避免这种情况!

标签: c++design-patternssingleton

解决方案


我认为你的结论是正确的,但它不一定是混乱的。这个答案比我能更好地描述它: 如何避免依赖注入构造函数疯狂?


推荐阅读