1.懒汉模式:很少用到或者几乎不会用到,那么懒汉式是一个不错的选择
懒汉模式在运行的时候获取对象比较慢(因为类加载是并没有创建对象实例),但是加载类的时候比较快(因为此时不创建对象实例)
- 懒汉模式:懒汉模式在使用时,容易引起不同步问题,所以应该创建同步"锁"
public class Cake {
//1.构造私有化,不允许外部直接实例化对象
private Cake(){}
//2.声明一个私有静态的对象引用,但不实例化
private static Cake instance;
//3.提供获取实例的方法,同步代码块加锁,安全高效
public static Cake getInstance(){
if(instance==null)
synchronized (Cake.class) {
if(instance==null) instance = new Cake();
}
return instance;
}
}
2.饿汉模式:实例在系统中经常会被用到,饿汉式是一个不错的选择
饿汉模式是在运行的时候获取对象较快(因为在加载类时就创建了对象实例),加载类的时候慢(此时还需要创建对象实例)。
- 饿汉模式:
public class Cake{
//1.构造私有化,不允许外部直接实例化对象
private Cake(){}
//2.创建一个私有的静态的实例对象,太饿了,管你要不要,先做出来吃起
private static Cake instance = new Cake();
//3.提供获取实例的方法
public static Cake getInstance(){
return instance;
}
}