繁体   English   中英

如何替换 singleton 设计模式

[英]How to replace singleton design pattern

我有自己的简单Timer实现,当创建一个计时器时,它会在TimerHandler注册自己,

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

如您所见,function RegisterTimer()是 static, TimerHandler实现为 singleton。

众所周知,这会在单元测试中产生问题! 测试Timer class 和TimerHandler class 可以,而且并不难。 但是在测试其他使用Timer的类时,有时会变得很棘手。

我想了解如何使用另一种设计来解决这个问题。

我目前提出的唯一解决方案是使用简单的依赖注入,只需将TimerHandler作为参数传递到我想使用Timer的任何地方。 但这会使我的代码非常混乱,所以我希望能够避免这种情况!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM