面试篇手写单例模式及原理剖析

Posted 小王Java

tags:

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


【面试篇】手写单例模式及原理剖析_java

一、什么是单例模式

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

注意

  • 单例模式只能由一个实例对象
  • 单例类必须自己创建自己的唯一实例。
  • 单例类必须给所有其他对象提供这一实例。

二、哪些地方用到了单例模式

单例模式经常用在需要一个实例的程序中,例如

  1. Spring框架IOC容器就使用到了单例模式,默认创建对象的时候为单例模式
  2. ResultBean 后端统一返回给前端的封装类,这个在项目中是唯一的,只用一个对象进行返回JSON给前端进行渲染

JDK中也有单例模式的身影,例

  • Runtime 体现了饿汉式单例
  • Console 体现了双检锁懒汉式单例
  • Collections 中的 EmptyNavigableSet 内部类懒汉式单例
  • ReverseComparator.REVERSE_ORDER 内部类懒汉式单例
  • Comparators.NaturalOrderComparator.INSTANCE 枚举饿汉式单例

三、单例模式的优缺点

优点

  1. 提供了对唯一实例的访问
  2. 可以节约系统资源,提高系统的性能,减少不必要的内存开销
  3. 允许可变数目的实例(多例类)

缺点

  1. 扩展困难(缺少抽象层)
  2. 单例类的职责过重
  3. 由于自动垃圾回收机制,可能会导致共享的单例对象的状态丢失

四、手写单例模式

以上是关于面试篇手写单例模式及原理剖析的主要内容,如果未能解决你的问题,请参考以下文章

MySQL事务篇:ACID原则事务隔离级别及事务机制原理剖析

面试官让你手写单例模式

面试官:请你手写一个单例模式

面试篇:Java的线程安全单例模式JVM内存结构等知识梳理

手写单例模式后,面试官直接和我谈入职

手写单例模式后,面试官直接和我谈入职