前言
这里我要介绍的是设计模式中的单例模式,我会介绍设计模式,单例模式的概念和应用的场合。
接下来就是单例模式的这几种写法啦,饿汉,懒汉,静态内部类,枚举和双重校验锁。
设计模式
设计模式 (Design Pattern):是一套被反复是用,多数人知晓的,经过分类编目的,代码设计经验的总结.
目的:使用设计模式是为了可重用代码,让代码更容易被别人理解,保证代码可靠性.
设计模式有许多,这里就介绍最基本,也是最常用的单例模式。
单例模式
有些对象只需要一个,如:配置文件、工具类、线程池、缓存、日志对象等。
多个程序读取一个配置文件,实际上配置文件还是只有一个,如果创造出多个实例,就会导致很多问题,占用资源过多,不一致的结果等。
而要保证整个应用中只有一个实例,就要用单例模式来实现啦。
方法
首先我们先来创建一个 SingleTon 类:
/*
* 单例模式 SingleTon
* 应用场合:有些对象只需要一个就够了
* 作用:保证整个应用程序中实例的个数有且只有一个
*/
public class Singleton {
}
饿汉模式
我们通常创建对象,是通过 new 构造方法来实例化,每次去实例化就是创建了一个新的对象,所以要想只实例化一次,就要从构造方法入手。
public class Singleton {
//1.将构造方法私有化,不允许外部直接创建对象
private Singleton() {
}
//2.创建类的唯一实例,使用private static修饰
private static Singleton instance = new Singleton();
//3.提供一个用于获取实例的方法,使用public static修饰
public static Singleton getInstance() {
return instance;
}
}
从上面的代码可以清楚的知道,我们为了不频繁的创建 SingleTon 的实例,就将构造方法私有化,然后在类里创建一个静态的实例对象,最后通过类方法去获取这个对象。我们用 Test 类来测试一下每次获取的实例是不是同一个。
public