2011-02-03 65 views
3

我以前使用单身人士的全球班,如果它是绝对必要的,即记录,错误处理。但我现在正在使用不喜欢这些的单元测试!是否有全局或'邪恶'单身人士的任何一点

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

+1

“我想问一个关于全局变量的基本问题,它们有什么意义?当你需要时创建一个新类的实例有什么问题?” 我想我不明白你的问题。在你需要的时候创建一个类的新实例没有什么问题...... – iuiz 2011-02-03 12:50:16

回答

3

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

我尝试给你关于这个问题我的想法列表:

  • 最严重的是,你的软件有循环依赖。如果您正在研究SOA体系结构,如果您不小心,它可能会发生得非常快。

  • 单身人士经常会导致你的班级非常紧密的联系,这使得你作为一名测试员的工作真的很难。

  • 如果你在一个大项目上工作,另一个类可以得到你的单例变化的实例,你将不得不改变很多代码。这也可能发生在没有单身人士的情况下,但我有这样的感觉,即单身人士经常会发生这种情况。

但有时候单身人士是一个不错的主意,你应该坚持下去。即使在AS3中,您也可以使用带有着名的私有类参数构造函数解决方法的单例。作为不使用单例的启发式,我会建议考虑一下,如果类需要大量引用其他单例。 有些人认为你也可以让你的单身人士可以测试。

4

要读这本SO主题:What is so bad about Singletons?

个人而言,我所有的单身人士的东西如日志,撤销/重做栈,本地化和通知从一个显示列表选项到另一个 - 当事件冒泡ISN”真的是一个选择。

尽管它们并不总是理想的,但无论纯粹主义者会说些什么,单身人士当然都有自己的位置,并且可以使开发变得更容易。