首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么时候应该使用单例模式而不是静态类?

什么时候应该使用单例模式而不是静态类?
EN

Stack Overflow用户
提问于 2008-09-05 18:48:04
回答 22查看 52K关注 0票数 86

在决定使用singleton还是使用静态类时,请列出设计注意事项。在这样做的时候,你不得不对比这两者,所以无论你能想出什么对比,在展示你的思维过程时都是很有用的!此外,每个面试官都喜欢看到例证。:)

EN

回答 22

Stack Overflow用户

回答已采纳

发布于 2008-09-30 00:43:22

可以延迟加载从其他classes.

  • Singletons继承的
  • 单例可以实现接口。只有在真正需要它的时候。如果初始化包括昂贵的资源加载,或者数据库connections.
  • Singletons提供了可以扩展到工厂的实际object.
  • Singletons,那么这是非常方便的。幕后的对象管理是抽象的,因此它具有更好的可维护性,并产生更好的代码。
票数 81
EN

Stack Overflow用户

发布于 2010-01-19 02:27:41

“两者都要避免”怎么样?单例和静态类:

  • 可能引入全局状态
  • 与多个其他类紧密耦合
  • 隐藏

使隔离单元测试类变得困难

相反,应该研究一下Dependency InjectionInversion of Control Container库。有几个IoC库将为您处理生命周期管理。

(和往常一样,也有例外,比如静态数学类和C#扩展方法。)

票数 14
EN

Stack Overflow用户

发布于 2008-09-05 18:51:31

我认为唯一的区别是语法: MySingleton.Current.Whatever()和MySingleton.Whatever()。正如David提到的,在这两种情况下,状态最终都是“静态的”。

编辑:埋葬大队来自于迪格...无论如何,我想到了一个需要单例的情况。静态类不能从基类继承,也不能实现接口(至少在.Net中不能)。因此,如果您需要此功能,则必须使用单例。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档