[英]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.