目录
单例模式
我的理解:意思就是某个类的对象,在整个程序中只存在一个,可以理解为只能被new一次,然后所有人都只能用这个对象。像这样的确保只生成一个实例的模式被称为Singleton模式。
作为单例模式的类有几个特点:
- 构造方法私有。确保无法被new
- 有一个自身的静态成员对象
- 有一个获取这个单例对象的 静态成员方法getInstance()
比如一个最简单的例子
方式一:这里可以确保肯定是单例,因为new这个动作在类加载时就做好了。(也被称为饿汉式)
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton() {
System.out.println("生成了一个实例。");
}
public static Singleton getInstance() {
return singleton;
}
}
方式二:这里可能会有问题,两个线程同时第一次调用getInstance方法时,可能会new两次。(也被称为懒汉式)
public class Singleton {
private static Singleton singleton;
private Singleton() {
System.out.println("生成了一个实例。");
}
public static Singleton getInstance() {
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}