单例模式--概念
单例模式常见的写法有:懒汉式,饿汉式,登记式。
单例模式的特点有:
1.单例类只能有1个实例
2.单例类必须自己创建自己的唯一实例
3.单例类必须给其他对象提供这个实例
选择单例模式可以避免不一致的状态。
懒汉式单例
//懒汉式单例类.在第一次调用的时候实例化自己
public class Singleton {
private Singleton() {}
private static Singleton single=null;
//静态工厂方法
public static Singleton getInstance() {
if (single == null) {
single = new Singleton();
}
return single;
}
}
在第一次调用的时候实例化自己,构造函数是私有的,防止被其他类实例化。它是线程不安全的。
饿汉式单例
public class Singleton1 {
private Singleton1() {}
private static final Singleton1 single = new Singleton1();
//静态工厂方法
public static Singleton1 getInstance() {
return single;
}
}
饿汉式在类被创建好后就完成自身实例化,是线程安全的。