概念:
Java中单例模式是一种常见的设计模式,单例模式的写法有几种,我主要了解两种:懒汉模式,饿汉模式。
单例模式的特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
懒汉模式:
public class Singleton {
//懒汉模式
private Singleton(){}
private static final class lazyHolder{
private static final Singleton INSTANCE = new Singleton();
}
public static final Singleton getInstance(){
return lazyHolder.INSTANCE;
}
}
这是懒汉模式下,考虑线程安全,性能最好的写法。
饿汉模式:
public class Singleton {
//饿汉模式
private Singleton(){}
private static final Singleton instance = new Singleton();
public static Singleton getInstance(){
return instance;
}
}
饿汉模式创建的同时就已经创建了一个静态的变量供系统使用,以后不再改变,所以天生是线程安全的。