单例模式是一个类只有一个实例。
该类设计好以后,在使用时只能使用一个该类的实例。
单例模式的实现方式有多种,最常见的两种是饿汉式和懒汉式。
1.饿汉式
public class Singleton{
private static Singleton instance=new Singleton();
//构造方法私有化,别的类无法通过构造方法进行该类对象的实例化
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
}
public class TestSingleton{
public static void main(String[] args){
Singleton s1=Singleton.getInstance();
Singleton s2=Singleton.getInstance();
System.out.println(s1);
System.out.println(s2);
}
}
执行结果
Singleton@7150bd4d
Singleton@7150bd4d
由此可知Singleton类只有一个实例。
2.懒汉式
public class Singleton{
private static Singleton instance=null;
private Singleton(){}
public static Singleton getInstance(){
if(null==instance){
instance=new Singleton();
}
return instance;
}
}
public class TestSingleton{
public static void mian(String[] args){
//只能通过getInstance()方法获取实例对象
Singleton s1=Singleton.getInstance();
Singleton s2=Singleton.getInstance();
System.out.println(s1);
System.out.println(s2);
}
}
执行结果
Singleton@6bbc4459
Singleton@6bbc4459
3.两者区别
饿汉式是在类加载的时候就进行初始化,懒汉式是在使用的时候才会进行加载。