单例模式中两种方式:1,饿汉式;2,懒汉式
一、饿汉式:
就是直接创建对象,形式如下
public class Demo{
//创建一个静态私有对象
private static Demo d = new Demo();
//把构造器私有化
private Demo(){}
/**
*创建一个单例模式的获取方法
*/
public static Demo getDemo(){
return d;
}
}
二、懒汉式:
创建空对象,只有在对象为空的情况下才创建实例对象
public class Demo{
//创建一个静态私有对象
private static Demo d = null;
//把构造器私有化
private Demo(){}
/**
*创建一个单例模式的获取方法
*/
public static Demo getDemo(){
//此if判断语句是为了提高效率
if(d==null){
//同步代码块,确定对象唯一性
synchronized (Demo.class) {
//判断对象是否为空,不为空创建单例对象
if(d==null){
d = new Demo();
}
}
}
return d;
}
}
饿汉式和懒汉式的区别:饿汉式:不用考虑线程安全问题;加载类的时候就开辟空间,用于存储单例静态对象;
懒汉式:有线程安全问题,需要加大代码量;只有调用getDemo()方法时才会创建对象;
感觉还是懒汉式比较好一点,因为只有调用它时,才会创建对象。