二十三中设计模式之:单例模式
单例模式通常用于保证系统中一个类只有一个单例。
单例模式分为三种:懒汉式、饿汉式、双重锁模式
例1:懒汉式(会产生线程安全问题,需要使用synchronized关键字进行加锁,只有在使用单例模式的时候,实例对象才会被创建)
public class Singleton{
//1.构造方法私有化
private Singleton(){
}
//2.声明私有化实例
private static Singleton singleton = null;
//3.提供对外的公开的方法
public synchronized static Singleton getSingleton(){
if(singleton==null){
singleton = new Singleton();
//return singleton;
}
return singleton;
}
}
例2:饿汉式(不会产生线程安全问题,但是在程序启动或单例模式类被加载的时候,实例对象就已经被创建。)
public class Singleton{
//1.构造方法私有化
priavte Singleton(){
}
//2.声明类的实例
private static Singleton singleton = new Singleton();
//3.创建公开的方法
public static Singleton getSingleton(){
return singleton;
}
}
例3:双重锁模式
public class Singleton {
//1.构造方法私有化
private Singleton(){
}
//2.声明类的实例
private static Singleton singleton = null;
//3.创建公开的方法
public static Singleton getSingleton(){
synchronized(Singleton.class){
if(singleton==null){
singleton = new Singleton();
}
}
return singleton;
}
}
懒汉式和饿汉式的使用场景:当经常使用单例模式的时候,使用饿汉式;不经常使用的时候使用懒汉式。