静态类是一个单例吗?

可能重复:
静态类和单例模式之间的区别?

我在想,

像Java的Math类那样,所有方法都是静态的类会被视为单例吗? 还是单身人士必须有一个实例,例如: Math.getInstance().abs(... )才有资格成为单身人士?

谢谢


在类中使用静态方法并不能将它定义为Singleton ,因为如果你有一个public constructor ,那么你仍然可以创建该类的多个实例。

对于有资格成为Singleton的类,它应该具有private constructor ,以便它不能从类外部实例化,并且有一个static factory ,每次调用时都返回same instance

如果你的意思是static class ,那么首先,你不能让你的top-level类成为static类。 你只能有static nested class ,在这种情况下你不需要创建该类的任何实例,但是你可以创建多个实例,因此它不是Singleton

另外,你提到的类java.lang.Math不是一个静态类。 你应该看到那个文件。


Java中的静态类只是不是内部类的嵌套类。 (例如,它们不像C#中的静态类。)它们仍然可以有实例方法,状态等 - 并且可以有多个实例。

java.lang.Math不是一个静态类。

不,从来没有实例的课程不是单身人士。 最重要的区别是单例可以实现一个接口(甚至可以从一个抽象类派生),而如果你从不创建一个类的实例,任何实例方法都是毫无意义的。


应用Singleton Pattern的类在JVM上随时有一个或者没有实例。 这就是为什么它被称为单吨。 拥有static non-static成员与单身或非单身没有关系。

链接地址: http://www.djcxy.com/p/78819.html

上一篇: Is a static class a singleton?

下一篇: Difference between static class and singleton class c#