单例设计模式
单例设计模式解决某个类在内存中只存在一个对象的问题。
方案一、饿汉单例设计模式
在该类一加载的时候就创建对象,且保证该类在内存中只有一个对象。
创建步骤:
1.私有化构造函数
2.声明本类的静态引用类型变量,并且使用该变量指向本类对象
3.提供一个公共的静态方法获取本类对象
例如:
class Single{
//声明本类的静态引用类型变量并指向本类对象
Private static Single single= new Single();
//私有化构造函数
Private Single(){}
//提供一个公共的静态方法获取本类对象
public static Single getInstance(){
return single;
}
}
方案二、懒汉单例设计模式
在类加载的时候不创建对象,什么时候使用什么时候创建,且保证该类在内存中只存在一个对象。
创建步骤:
1.私有化构造函数
2.声明本类的静态引用类型变量,但不创建对象
3.提供公共的静态的方法,获取本类对象。在获取之前判断是否已经创建了本类对象,如果创建了,那就直接返回对象;若没有创建,则先创建本类对象的实例,再返回。
例如:
class Single{
//声明本类的静态引用类型变量,但不创建对象
private static Single single;
//私有化构造函数
private Single(){}
//提供共有的静态方法,获取本类对象
public static Single getInstance(){
//判断是否创建 若没创建进入锁中创建,反之返回该对象
if(single==null){
//锁是解决判断完创建对象时的线程安全问题
Synchronized(“锁”){
if(single==null){
single=new Single();
}
}
}
return single;
}
}
推荐使用:饿汉单例设计模式
因为懒汉单例设计模式如果不加锁会存在线程安全问题。