【发布时间】:2019-10-30 13:42:48
【问题描述】:
我有自己的简单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 的地方。但这会使我的代码非常混乱,所以我希望能够避免这种情况!
【问题讨论】:
-
我认为这些基本上是您的选择。要么你只能有一个,要么你可以有多个,然后你需要到处传递它,这样你就知道要使用哪个了。
-
为什么在使用其他类时会很棘手?
标签: c++ design-patterns singleton