简单理解
频繁创建对象、管理对象是一件耗费资源的事,如果我们可以使用一个对象就可以完成功能了,那就使用单例模式吧!
静态.doSomething和单例的区别
使用静态类.doSomething()体现的是基于对象
 使用单例设计模式体现的是面向对象。
单例模式五种写法
饿汉式
直接在成员变量上new出实例,提供方法返回
普通懒汉式
等到调用方法的时候再创建对象,该方法需要加Synchronized锁
双重检测机制(DCL)懒汉式
基于普通懒汉式的提升,普通懒汉式的效率太低了
1.使用volatile修饰我们的对象引用
2.外部if判断对象是否为null,为null往下执行,不为null直接返回对象
3.使用syn同步进入代码块,使用if判断对象是否为null,为null就创建对象
4.使用volatile修饰成员变量的原因就是防止重排序的问题--->变量还未完全初始化就被线程B返回了
 静态内部类懒汉式
创建一个内部类,在内部类直接创建对象
外部类提供方法来获取内部类创建的对象
这种方式是非常方便和友好的,在外部调用的时候,内部类才会创建对象
枚举
public enum Java3y3y {
JAVA_3_Y_3_Y,
}
省事,安全(枚举能够有效防止多次实例化的问题)