Java设计模式——单例模式

关于单例模式,我想大多数都知道单例很有用,很多时候我们用单例来实现的就是在多个界面都用到一个实例对象的时候,不需要重新new和初始化,赋值一系列操作。除此之外还有一些工具类什么的,像图片加载的工具类通常都会耗费一定的缓存空间,要是反复创建这些对象想想就知道多么的可怕。

普通单例

之所以叫做懒汉只是因为instance只有在真正需要的时候,调用getInstance()获取实例时才会new一个对象。但可能会出现的问题是在多线程中,可能会new出两个对象,然后对instance进行了两次覆盖,不过其实实战中这种情况发生的几率并不高,而且影响一般很小。所以要是使用的时候完全不会出现多线程的问题的话,毫无疑问这是最好的方法。

双重校验锁

我想很多人包括我自己常用的都是这一种方法来实现单例模式,因为这种方法既能避免线程安全问题,而且还能最大限度减少对性能的影响(每次对对象上锁性能都会有所下降)。

静态内部类

这种方法看起来比较绕,主要是利用了classloder的机制来保证初始化instance时只有一个线程。使用和理解都比其它的要困难,建议使用枚举或者双重校验锁的方式。

枚举

据说不少的公司都有人尝试使用这种方法,因为不仅这种方法既可以避免线程安全问题,而且还能防止反序列化重新创建新的对象。

大多数时候我们使用单例的目的也很单纯,所以哪一种顺手就用哪一种吧

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java设计模式——单例模式 单例模式应该是大家最为熟知的一种设计模式了,相信大家或多或少的都在自己的项目中使用过...
    gogoingmonkey阅读 3,505评论 0 2
  • 单例模式由于只创建了唯一对象可以避免资源的多重占用,减少内存的开销,对于经常性使用对象的类来说,单例是一个不错的选...
    InBinfen阅读 3,012评论 2 2
  • 概念 java中单例模式是一种常见的设计模式,单例模式的写法有好几种,比较常见的有:懒汉式单例、饿汉式单例。单例模...
    怡红快绿阅读 3,405评论 0 0
  • 单例模式是设计模式中使用最普遍的设计模式之一。它是一种对对象创建模式,主要用于产生一个对象的具体唯一实例,它可以确...
    凡星轨迹阅读 4,095评论 0 49
  • 定义 单例模式是一种创建模式,指某个类如果采用了单例模式,则在这个类被创建后,只能产生一个实例可供外部访问,并且提...
    步积阅读 3,388评论 0 2

友情链接更多精彩内容