c++ - 如何替换单例设计模式
问题描述
我有自己的简单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
. 但这会使我的代码非常混乱,所以我希望能够避免这种情况!
解决方案
我认为你的结论是正确的,但它不一定是混乱的。这个答案比我能更好地描述它: 如何避免依赖注入构造函数疯狂?
推荐阅读
- java - 在 docker 映像中构建 java 项目的问题(内存问题)
- .htaccess - 如何将单词附加到 URL
- asp.net - 如何将包含 Gridview 控件和图像的面板导出为 PDF
- mule - 无法在 Mule4 的变量中设置 XML 有效负载
- apollo - 访问自定义指令参数
- typescript - 类型“{}”不可分配给类型“T”
- html - 如何使用应用程序脚本通过 html 标签将列表添加到电子邮件模板的正文中?不希望制作整个电子邮件 html
- ecmascript-6 - Es6 类后期静态绑定
- javascript - 如何摆脱表格行标题重复?
- json - 调试时,尝试在 .Net Core 中调用 JsonResult 时出现错误代码 404