1、什么是单例模式
①构造方法私有化
②静态属性指向实例
③使用公共的静态方法将属性返回出去
④分为饿汉式和懒汉式
2、饿汉式举例
public class Singleton {
//1、将构造方法私有化
private Singleton() {
}
//2、新建一个类属性(类属性只能有一个)指向要实例化的对象
private static Singleton singleton=new Singleton();//此处直接实例化,因此是饿汉式
//3、准备一个方法,将该属性返回
public static Singleton getSingletion() {
return singleton;
}
}
public static void main(String[] args) {
//因私有化构造方法,直接实例化会报错
//Singleton s1=new TestSingleton();
Singleton s1=Singleton.getSingletion();
Singleton s2=Singleton.getSingletion();
//因此结果为true
System.out.println(s1==s2);
}
3、懒汉式举例
public class Singleton2 {
// 1、将构造方法私有化
private Singleton2() {
}
// 2、新建一个类属性(类属性只能有一个)指向要实例化的对象
private static Singleton2 singleton2; // 此处属性仍为null;
// 3、准备一个方法,将该属性返回
public static Singleton2 getSingletion() {
//使用该方法是判断是否为null;
if(singleton2==null) {
singleton2=new Singleton2();
}
return singleton2;
}
}
public static void main(String[] args) {
//因私有化构造方法,直接实例化会报错
//Singleton s1=new TestSingleton();
Singleton2 s1=Singleton2.getSingletion();
Singleton2 s2=Singleton2.getSingletion();
//因此结果为true
System.out.println(s1==s2);
}
饿汉式无论你是否使用该对象,都会立即实例化
懒汉式在你要用时,才会被实例化