概述
单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例, 并且该类只提供一个取得其对象实例的方法(静态方法)。单例适用于需要频繁的进行创建和销毁的对象、创建对象时耗时过多或耗费资源过多(即:重量级对象),但又经常用到的对象、工具类对象、频繁访问数据库或文件的对象(比如数据源、Hibernate 的 SessionFactory工厂等)。
单例的实现七种方法:
1.饿汉式(静态变量)(推荐)
该方法在类装载时就完成实例化,避免线程同步问题
但是如果该类一直没使用,则会造成内存浪费(不仅getInstance会导致类装载,其它方式也可能导致类装载)
class Singleton{
//1.构造器私有化,外部无法new
private Singleton(){
}
//2.使用内部创建对象实例,静态变量
private final static Singleton instance = new Singleton();
//3.提供一个公有的静态方法,返回实例对象
public static Singleton getInstance(){
return instance;
}
}
2.饿汉式(静态代码块)(推荐)
同静态变量
class Singleton{
//1.构造器私有化,外部无法new
private Singleton(){
}
//2.使用内部内创建对象实例,静态变量
private static Singleton insta