一、单例模式概念:
确保一个类只有一个实例;
自行实例化,并向整个系统提供全局访问点;
使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。
二、单例模式的特征:
单例模式有三个特性:
- 单例类只能有一个实例
- 单例类必须自行创建自己的唯一的实例
- 单例类必须给所有其他对象提供这一实例
三、单例模式的几种实现方法:
1、懒汉式,线程不安全:
假设有多个线程进入if(uniqueInstance == null) ,并且此时,uniqueInstance == null,则会执行多次uniqueInstance = new Singleton(),实例化多次uniqueInstance。
public class Singleton {
private static Singleton uniqueInstance;
private Singleton(){
}
private static Singleton getuniqueInstance() {
if(uniqueInstance == null) {
return uniqueInstance = new Singleton();
}
return uniqueInstance;
}
}
2、饿汉式,线程安全
private static Singleton uniqueInstance = new Singleton();
private Singleton() {
}
private static Singleton getInstance() {
return uniqueInstance;
}
3、懒汉式,线程安全
private static Singleton uniqueInstance;
private Singleton() {
}
private static synchronized Singleton getInstance() {
if(uniqueInstance == null) {
return uniqueInstance = new Singleton();
}
return uniqueInstance;
}