单例模式_听韩顺平课笔记

1.单例介绍

单例设计模式,就是采取一定的方法保证整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。

如:Hibernate中的SessionFactory

单例模式有八种实现方式:

1.饿汉式(静态常量)
2.饿汉式(静态代码块)
3.懒汉式(线程不安全)
4.懒汉式(线程安全)
5.懒汉式(同步代码块)
6.DoubleCheck
7.静态内部类
8.枚举方式

2.静态常量饿汉式

实现步骤:

  • 构造器私有化(防止new)
  • 类的内部创建对象
  • 向外暴露一个静态的公共方法。getInstance
  • 代码实现

静态常量饿汉式的优缺点:

3.静态代码块饿汉式

除了将实例化过程放在静态代码块中外,实现与静态常量饿汉式一致,也有一样的优缺点

4.线程不安全懒汉式(实际开发过程中不要使用)

实现思路:提供一个静态的公有方法,当使用到该方法时,才去创建instance

优缺点:
优点:实现了 Lazy Loading的效果,但只能在单线程下使用
缺点:多线程下不安全

5.线程安全,同步方法懒汉式(实际开发过程中不推荐使用,效率低)

优缺点:
优点:解决线程不安全问题
缺点:效率太低

6.同步代码块懒汉式(实际开发过程中不要使用)

将同步方法,改为同步产生实例化的代码块

优缺点:

7.DoubleCheck(推荐使用)

使用volatile关键字

优缺点:

8.静态内部类(推荐使用)

静态内部类的两个特点:

  • 当外部类被装载时,静态内部类并不会被装载(懒加载)
  • 静态内部类被装载时,只会装载一次,而且装载时,线城是安全的(JVM保证)

9.枚举方式(推荐使用)

10.单例模式JDK源码分析

JDK中java.lang.Runtime就是经典的单例模式(饿汉式)

单例模式注意事项和使用细节

11.单例模式总结

  • 什么是单例模式
  • 单例模式的八种实现方式
  • 单例模式注意事项和使用细节
  • 单例模式适用于:需要频繁进行创建和销毁的对象,重量级对象,工具类对象,数据源,session工厂
posted @ 2021-10-04 11:17  CH0701  阅读(46)  评论(0)    收藏  举报