静态类和单例模式之间的区别?

静态类和单例模式之间存在什么真正的(即实际的)区别?

两者都可以在没有实例化的情况下被调用,它们都只提供一个“实例”,而且它们都不是线程安全的。 还有其他的区别吗?


是什么让你说单线程或静态方法不是线程安全的? 通常两者都应该被实现为线程安全的。

单身人士和一些静态方法之间的巨大差异是单身人士可以实现接口(或者从有用的基类派生,尽管这在我的经验中不太常见),所以你可以绕过单身人士,就好像它是“另一个“实施。


真正的答案是Jon Skeet,在这里的另一个论坛上。

单例允许访问单个创建的实例 - 该实例(或者对该实例的引用)可以作为参数传递给其他方法,并作为普通对象处理。

静态类只允许静态方法。


  • 辛格尔顿对象存储在 ,但静态对象存储在堆栈中
  • 我们可以克隆 (如果设计者不禁止它)单例对象,但是我们不能克隆静态类对象。
  • 单例类遵循OOP (面向对象原则),静态类不遵守。
  • 我们可以用Singleton类实现一个interface ,但是类的静态方法(或者C# static class )不能。
  • 链接地址: http://www.djcxy.com/p/2223.html

    上一篇: Difference between static class and singleton pattern?

    下一篇: Are static class variables possible?