创建模式之单例模式

Posted lqh969696

tags:

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

单例模式:系统只存在一个该类的一个对象

1) 节省了系统资源,对于一些需要频繁创建销毁的对象,使用单例模式可以提高系统性能

2) 单例模式使用的场景:需要频繁的进行创建和销毁的对象、创建对象时耗时过多或耗费资源过多(即:重量级对象),但又经常用到的对象、工具类对象、频繁访问数据库或文件的对象(比如数据源、session 工厂等)

 首先引入一个辅导员对象

大学某专业某班只能有一个有一个辅导员

创建这个辅导员的方法有八种:

1、懒汉式(线程不同步,作废)

技术图片

 

 通过这种方式创建单例,在多线程条件下会造成创建多例(一个班有多个辅导员,失败)

2、懒汉式(线程同步,静态代码块,失败)

技术图片

 

 举例辅导员a和辅导员b同时进入判断,辅导员a创建完成以后辅导员b还是会创建,失败

3、懒汉式(线程同步)

技术图片

 

 实现线程安全,但是每个请求都会排队访问方法,效率低,

4、饿汉式,静态常量

技术图片

 

 没有实现懒加载,改专业的辅导员定下来了,但是不确定是否开放该专业

5、饿汉式,静态代码块

技术图片

 

 没有实现懒加载,该专业的辅导员一开始定下来了,没有确定是否有该专业收人

6、双重检查

技术图片

 

 通过并发方式,双重判断是否已经有了该对象

7、今天内部类

技术图片

 

 静态内部类只调用一次创建对象,

8、枚举的方式

技术图片

 

技术图片

 

 枚举只会调用一次保证了只有一个对象

 

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

《JAVA与模式》之单例模式

《JAVA与模式》之单例模式

《JAVA与模式》之单例模式

设计模式之单例模式

设计模式之单例模式

设计模式之单例模式