设计模式 - Java中单例模式的6种写法及优缺点对比
程序员文章站
2022-04-14 18:25:39
本篇通过代码讲解6种不同的单例模式的实现方式, 分别是: 饥饿模式、懒惰模式、双重检查锁模式、静态内部类模式、枚举类模式和ThreadLocal模式, 并分析了它们之间的优缺点, 最后还介绍了JDK中常见的单例模式的应用, 以及破坏单例模式的多种方法. ......
1 为什么要用单例模式
1.1 什么是单例模式
单例模式就是: 在程序运行期间, 某些类有且最多只有一个实例对象.
我们的应用中可能存在这样的需求: 某些类没有自己的状态, 在程序运行期间它们只需要有一个实例, 换句话说, 无论为这些类创建多少个实例, 对程序的运行状态、运行结果都不会产生影响.
更重要的一点是: 有些类如果存在两个或者两个以上的实例, 应用程序就会发生某些匪夷所思的错误, 不同于空指针、数组越界、非法参数等错误, 这样的问题一般都很难提前发觉和定位.
这个时候, 我们就应该把这样的类控制为单例结构 —— 确保程序运行期间最多只有一个相对应的实例对象.
关于类的状态的理解:
① 比如有一个 person 类, 它有成员变量name、age等等, 不同的姓名和年龄就是不同的人, 也就是说这些变量都是不确定的, 这样的类就是有状态的类.
② 而像一些配置类, 比如 redisprops (redis的配置信息)类, 它的所有属性和方法都是static的, 没有不确定的属性, 这样的类就可以认为是没有状态的类.
—— 纯属个人看法, 若理解有误, 还请读者朋友们提出, 欢迎批评和交流
上一篇: 乐字节-Java8新特性-接口默认方法