单例类:如果一个类只创建一个实例,就被叫做单例类。
使用范围:当这个类创建太多实例没有太大意义的时候就可以使用,大部分时候类的构造器定义为public访问权限,在这里我们应private来修饰构造器,从而把该类的构造器藏起来。但是还得进行该类的创建对象的过程,就得提供一个public方法作为该类的访问点,用于创建,且该方法必须使用static修饰(因为该类调用之前还没有对象产生,因此使用该方法的不可能是对象,只能是类)
初次之外,该类还必须缓存已经创建的对象,否则无法判断是否已经创建了对象,也无法保证只创建一个对象。我们用一个成员变量来保存曾经创建的对象,因为该成员变量需要被上面的静态方法访问,所以必须用static来修饰
代码展示
import javax.xml.crypto.dsig.SignedInfo;
public class Singleton {
private static Singleton instance;
private Singleton(){};
//静态方法才能访问静态变量
public static Singleton getInstance(){
if(instance==null){
instance=new Singleton();
}
return instance;
}
public static void main(String[] args) {
Singleton s1=Singleton.getInstance();
Singleton s2=Singleton.getInstance();
System.out.println(s1==s2);
}
}
解释:最后输出是true,因为只有一个对象产生,所以s1和s2指向同一块内存区,所以输出是true