3

如果绝对必要的话,我以前将单例用于全局类,即日志记录、错误处理。但我现在正在使用不喜欢这些的单元测试!

我想问一个关于全局变量的基本问题。他们有什么意义?在需要时创建类的新实例有什么问题?

4

2 回答 2

4

你应该阅读这个 SO 线程: Singletons 有什么不好?

就个人而言,我完全支持单例,例如日志记录、撤消/重做堆栈、本地化和从一个显示列表分支到另一个分支的通知 - 当事件冒泡不是真正的选择时。

虽然它们并不总是理想的,但单身人士肯定有自己的位置,并且可以使开发变得容易得多,不管某些纯粹主义者可能会说什么。

于 2011-02-03T15:27:02.213 回答
3

确实,有时单身人士会产生问题,如果没有他们,你就不会遇到这些问题。

我试着给你列出我对这个问题的想法:

  • 最严重的是,您的软件具有循环依赖关系。如果您正在使用 SOA 架构,如果您不小心,它可能会很快发生。

  • 此外,单例通常会导致您的类非常紧密地耦合,这让您作为测试人员的工作真的很难。

  • 如果你在一个大项目上工作,而另一个类获取你的 Singleton 实例的方式发生了变化,你将不得不更改大量代码。这也可能在没有单例的情况下发生,但我有一种感觉,它更经常发生在单例中。

但有时单例是个好主意,你应该坚持下去。即使在 AS3 中,您也可以将单例与著名的私有类参数构造函数解决方法一起使用。作为不使用单例的启发式方法,我建议考虑一下,如果该类需要大量对其他单例的引用。通过一些思考,您还可以使您的单例可测试。

于 2011-02-03T15:17:20.197 回答