千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:重庆千锋IT培训  >  技术干货  >  高频面试题--单例及应用场景

高频面试题--单例及应用场景

来源:千锋教育
发布人:lxl
时间: 2023-03-23 15:25:32

  很多同学去面试的时候,经常会被问到对单例的理解。当然,单例比较简单,同学们也基本能弄清楚单例的概念。但一些深层次的内容,有些同学可能理解的还不太够,例如单例的优势、使用场景等。今天,就给大家全面阐述一下单例模式。

  一. 生活案例

  相信很多小伙伴都知道,国家早几年施行的计划生育政策, 规定一对夫妇只生一胎。刚结婚时只能生一胎,生完后就不能再生,否则就会违背国家政策。

  二. 程序概念

  而我们所谓单例设计模式,简单地说就是无论程序如何运行,采用单例设计模式的类(Singleton类)永远只会有一个实例化对象产生。相当于一个类只能有一个“孩子”,所以单例模式就属于符合计划生育的政策要求。那单例是怎么保证一个类只能生一个“孩子”呢?具体实现步骤如下:

  (1). 构造方法私有化(采用private修饰);

  (2). 使用静态方法调用得到单例模式对象。

  示例代码

单例及应用场景

  单例作用

  从上面的案例可以看出,不管是单例的饿汉式还是懒汉式,最终会保证一个类只能得到同一个对象,所以使用单例的好处显而易见,就是确保只能产生一个类对象,所以就可以节省内存资源。

  应用场景

  在学习前面的课程时,可能有很多同学不理解,单例在实际开发中到底有哪些用处?其实不管是在Web开发,还是SSM框架中,单例设计模式都随处可见。给你举个简单例子,例如:多个用户访问淘宝网站,如果不是单例设计,那么每个人的访问,都会创建一个独立的对象,这就大大地浪费了内存资源。

  懒汉式 VS 饿汉式

  同学们也看到了,上面代码中的单例模式分为懒汉式和饿汉式两种情况。我经常听到有的同学对两种情况的区别,理解为懒汉式是线程不安全,而饿汉式是线程安全的,但并不理解两者的具体优缺点在哪,接下来就再说一下两者的具体区别。

  4.1 饿汉式

  饿汉式无需关注多线程问题,写法简单明了,可以直接在类中实例化静态对象。但它是在加载类时就要创建实例,所以如果类中有很多个单例对象,可能我暂时是用不到的,但也进行了创建,反而会浪费资源。

  4.2 懒汉式

  懒汉式的优势在于可以延时加载,也就是说可能有些单例对象没有使用时,我就不需要创建此对象,只有在调用时才创建出对象,但该方式在多线程时并不安全。

  4.3 小节

  综上所述,当类中有很多个单例对象,但并不是都必须立即使用,那么就选择懒汉式比较好;如果类中的单例对象基本都会被立即使用到,且考虑多线程的情况,应该选择饿汉式的设计。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

java的输入语句—— Scanner类

2023-05-04

java数据库操作常识事务的四大特性

2023-05-04

DML数据操作之增加或删除数据

2023-05-04

最新文章NEW

socket是什么?有什么作用?

2023-05-04

Java常量定义是什么

2023-04-28

一分钟带你学多线程

2023-04-28

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>