面试篇手写单例模式及原理剖析
Posted 小王Java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试篇手写单例模式及原理剖析相关的知识,希望对你有一定的参考价值。
一、什么是单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
注意
- 单例模式只能由一个实例对象
- 单例类必须自己创建自己的唯一实例。
- 单例类必须给所有其他对象提供这一实例。
二、哪些地方用到了单例模式
单例模式经常用在需要一个实例的程序中,例如
- Spring框架IOC容器就使用到了单例模式,默认创建对象的时候为单例模式
- ResultBean 后端统一返回给前端的封装类,这个在项目中是唯一的,只用一个对象进行返回JSON给前端进行渲染
JDK中也有单例模式的身影,例
- Runtime 体现了饿汉式单例
- Console 体现了双检锁懒汉式单例
- Collections 中的 EmptyNavigableSet 内部类懒汉式单例
- ReverseComparator.REVERSE_ORDER 内部类懒汉式单例
- Comparators.NaturalOrderComparator.INSTANCE 枚举饿汉式单例
三、单例模式的优缺点
优点
- 提供了对唯一实例的访问
- 可以节约系统资源,提高系统的性能,减少不必要的内存开销
- 允许可变数目的实例(多例类)
缺点
- 扩展困难(缺少抽象层)
- 单例类的职责过重
- 由于自动垃圾回收机制,可能会导致共享的单例对象的状态丢失
四、手写单例模式
以上是关于面试篇手写单例模式及原理剖析的主要内容,如果未能解决你的问题,请参考以下文章