为什么要使用单例模式?
要求某个对象有且只有一个时,使用单例模式(比如:古代皇帝,一山不容二虎)
单例模式方法构造
饿汉模式
- 构造函数私有化
- 创建类的唯一实例
- 提供一个获取实例的方法
饿汉模式示例
/**
* Created by Administrator on 2018/2/2.
* 单例模式-饿汉模式
*/
public class HungryManModel {
//构造函数私有化,不允许外面直接实例化对象
private HungryManModel(){}
//创建类的唯一实例
private static HungryManModel instance = new HungryManModel();
//提供一个获取实例的方法
public static HungryManModel getInstance(){
return instance;
}
}
懒汉模式
- 构造函数私有化
- 申明类的唯一实例
- 提供一个获取实例的方法
懒汉模式示例
/**
* Created by Administrator on 2018/2/2.
* 单例模式-懒汉模式
*/
public class LazyManModel {
//构造函数私有化,不允许外面直接实例化对象
private LazyManModel(){}
//申明类的唯一实例
private static LazyManModel instance;
//提供一个获取实例的方法
public static LazyManModel getInstance(){
if(instance == null){
instance = new LazyManModel();
}
return instance;
}
}
两者的区别
- 饿汉模式在加载类时比较慢,在运行时获取对象时比较快,线程安全
- 懒汉模式在加载类时比较快,在运行时获取对象时比较慢,线程不安全