java中3中单例模式例子

Posted lizhilin777

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中3中单例模式例子相关的知识,希望对你有一定的参考价值。

java面试官也经常面试这个单例模式,一般能说出两私一公就不错了

java程序员平时开发用的少,但面试遇到多啊,也是有必要研究下的

什么叫两私一公

  1. 私有的构造函数
  2. 私有静态实例属性
  3. 公共的获取实例的静态方法

基础知识点

多线程、线程安全、static、构造函数、枚举

例子1

传统单线程环境下

缺点:线程不安全

技术图片

 

例子2

  • 多线程下通过synchronized保证线程安全
  • 跟例子1就多了同步,实例初始过了就直接返回实例不用进入同步代码块了
  • 多重检查锁的方式去保证安全
  • 缺点:还是可以通过反射去创建实例,不完美啊
技术图片

 

例子3(完美)

利用枚举的特性在JVM层保证绝对的单例

技术图片

 

为啥枚举的单例就完美了?

枚举本身是无法通过反射、克隆、反序列化等等把对象初始出来的。

枚举底层原理我就不在这里细说了。

总结

  • 搞懂两私一公(面试的时候能说出第2个例子就可以)
  • 枚举完美单例(能说出第3个例子就非常好)

以上是关于java中3中单例模式例子的主要内容,如果未能解决你的问题,请参考以下文章

Java中单例模式和静态类的区别

java中单例模式singleton

java中单例设计模式

java中单例设计模式

Java中单例模式的安全性分析

java中单态模式或单例模式(Singleton)有什么意义?