定义:
确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
单例模式的三要素:
(1)私有的静态的成员变量
(2)私有的构造方法
(3)公共的静态的入口点方法
单例模式的分类:
(1)饿汉式
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return singleton;
}
}
(2)懒汉式
public class Singleton {
private static Singleton singleton;
private Singleton(){} public static synchronized Singleton getInstance(){
if(singleton==null){
singleton = new Singleton();
}
return singleton;
}
}
单例模式的适用场景:
(1)读取数据库配置文件。比如练习项目中的ConfigReader.java,它利用单例模式来读取数据库xml配置文件。
(2)频繁访问数据库或文件的对象。比如练习项目中的UserManager.java,它需要频繁对数据库进行增删改查操作,所以可以做成单例模式。
(3)需要频繁实例化然后销毁的对象。
(4)只需要一个对象的类。
在java中,饿汉式单例要优于懒汉式单例