单例模式,你真的写对了吗? 面试必备!

单例模式应该是设计模式中最容易理解也是用得最多的一种模式了,同时也是面试的时候最常被问到的模式。

1. 单例模式的定义

单例模式指的是一个类中在任何情况下都绝对只有一个实例,并且提供一个全局访问点。

2. 单例模式的应用场景

单例模式的应用非常广泛,如数据库中的连接池、J2EE中的ServletContext和ServletContextConfig、Spring框架中的ApplicationContext等等。然而在Java中,单例模式还可以保证一个JVM中只存在一个唯一的实例。

单例模式的应用场景主要有以下几个方面:

  • 当需要频繁创建一些类的时候,使用单例可以降低系统的内存压力,减少GC(垃圾回收) ;
  • 当某些类创建实例时候需要占用的资源较多,或者实例化过程耗时比较长,且经常使用的情况;
  • 当存在频繁访问数据库或者文件的对象;
  • 当对于一些控制硬件级别的操作,或者从系统上来讲应当是单一控制逻辑的操作,是不允许存在多个实例的,否则玩完;

 

3. 单例模式的优缺点

3.1 单例模式的优点

  • 单例模式可以保证内存中只有一个实例对象,从而会减少内存的开销
  • 单例模式可以避免对资源的多重占用;
  • 单例模式设置全局访问点,可以起到优化和共享资源的访问的作用;

3.2 单例模式的缺点

  • 扩展难, 因为单例模式通常是没有接口的啊,如果想要扩展,那么你唯一途径就是修改之前的代码,所以说单例模式违背了开闭原则;
  • 调试难,因为在并发测试中,单例模式是不利于代码的调试的,单例中的代码没有执行完ÿ
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值