一、单例模式
单例模式(英文 Singleton Pattern
),顾名思义,就是保证一个类
在任何时候被调用
,都返回一个唯一
的实例。常用于 Spring
中的 ApplicationContext
、 数据库连接池
等等。
单例模式是一种很常见的设计模式,当程序里面出现一些不变
的实例,此时就可以考虑采用单例模式。例如一些起到翻译作用的字典表,加载到程序里面,获取该字典表的时候就可以采用单例模式。
二、示例代码
常见的单例模式有两种
不同的类型,根据实例化的时间,该实例在被调用前
就已经实例化的是饿汉模式
,调用后
才进行实例化的是懒汉模式
。
A、饿汉模式
- 优点
- 执行效率高,绝对线程安全
- 不用加锁操作
- 缺点
- 不使用时也会加载,浪费内存
- 适用
- 单例对象比较少的情况,实际上,ApplicationContext就是该模式。
package com.test.singletonPattern;
/**
* 饿汉模式,绝对线程安全
*/
public class SimpleHungrySingleton {
private static SimpleHungrySingleton simpleHungrySingleton = new SimpleHungrySingleton();
public SimpleHungrySingleton() {
}
public static SimpleHungrySingleton getInstance() {
return simpleHungrySingleton;
}
}
B、懒汉模式
- 优点
- 按需创建,不使用就不创建
package com.test.singletonPattern;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory