Java singleton的目的以及我们为什么需要私有构造函数
我是JAVA的新手 当我读到单例模式时,它需要先运行一个实例 诸如此类:Java singleton的目的以及我们为什么需要私有构造函数,java,singleton,Java,Singleton,我是JAVA的新手 当我读到单例模式时,它需要先运行一个实例 诸如此类: public class Singleton { private static final Singleton instance = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return instance; } } public class Singl
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
}
public class Singleton {
public Singleton(){}
//methods,....
}
但我也写了这样的东西:
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
}
public class Singleton {
public Singleton(){}
//methods,....
}
所以我有一些问题:
1) 为什么我们需要singleton中的实例?目的是什么?
2) 为什么singleton中的构造函数是私有的?我们如何初始化该类的输入
我知道我的问题很基本,我听到了很多
但是请帮我解释一下
感谢并致以最诚挚的问候不要在单例中使用公共构造函数。 单例的意义在于,您只有该类的一个实例。所以,如果你有一个公共构造函数,你不能保证只有一个实例。 您有一个私有构造函数,它在该类中只被调用一次,所以您只有一个实例。您可以通过getInstance方法提供该实例。1)Singleton模式是一种设计模式,在程序的整个生命周期中,您只有一个实例,即一个对象。因此,将实例设为静态并初始化一次,以便程序中只有一个对象 2) 构造函数必须是私有的,这样您就不会像自己希望的那样初始化对象。也就是说,当构造函数是私有的时,您不能调用
new Singleton()
,因为您不能从类外部访问构造函数,因为它是私有的。您可以通过创建一个静态方法来初始化输入,该方法接受一些参数,并在构造唯一实例时创建它们
例如,考虑下面的
public class Singleton {
private static Singleton instance;
private String a;
private String b;
private Singleton(){}
private Singleton(String a, String b) {
this.a = a;
this.b = b;
}
public static Singleton getInstance(String a, String b){
if (instance == null)
instance = new Singleton(a, b);
return instance;
}
}
希望这有帮助 听起来你基本上需要阅读更多关于单例模式的内容。您的第二个类根本不是单例。
当我阅读有关单例模式的内容时,它需要先运行一个实例。
您读完有关单例的内容了吗?您的问题通常会在教程/课程中得到解答,因为它们是单例模式背后的原理。根据定义,单例的可能副本只有一个实例。你在问什么?