设计模式
单例模式
应用的场景
有些对象只需要一个就足够了, 如:古代的皇帝
作用
保证应用程序中,某个实例有且仅有一个
分类
- 懒汉模式
- 饿汉模式
饿汉模式
实现步骤
第1步:创建一个类:Singloten
第2步:将此类的构造方法私有化 -> 不允许外部直接创建对象
private Singloten() {}
第3步:创建类的唯一实例,使用private static 修饰
private static Singloten instance = new Singloten();
第4步:提供一个用于外部获取实例的方法,使用 public static修饰
public static Singloten getInstance() {
return instance;
}
懒汉模式
实现步骤
第1步:创建一个类:Singloten
第2步:将此类的构造方法私有化 -> 不允许外部直接创建对象
private Singloten() {}
第3步:声明类的唯一实例,使用private static 修饰
private static Singloten instance;
第4步:提供一个用于外部获取实例的方法,使用 public static修饰
public static Singloten getInstance() {
if (null == instance) {
instance = new Singloten();
}
return instance;
}
饿汉模式与懒汉模式的区别
区别 | 饿汉模式 | 懒汉模式 | 造成区别的原因 |
---|---|---|---|
加载类时速度 | 比较慢 | 比较快 | 加载时类是否创建:饿汉模式需创建所以慢,懒汉模式不需要创建所以快 |
运行时获取类速度 | 比较快 | 比较慢 | 类是否已创建:饿汉模式已创建所以快,懒汉模式未创建需创建所以慢 |
线程安全 | 安全 | 不安全 |