设计模式之单例模式

不知不觉国庆假期已经过去了一半,是不是又碌碌无为,浑浑噩噩地度过了几天,哈哈,我也一样。今天,我们来讲一讲一个单例模式。这个应该是最简单的设计模式了,相信每一个程序员都能学会。


场景

如果我们在代码中需要一个全局类,我们可以让它变成一个单例。例如,我们在系统的多个地方需要读取一个配置文件,我们并不需要每次都去new一个实例,然后去读文件,只需要维护一个全局的Config类,并且每次使用的时候校验下文件是否变更即可。依赖可以减少类的创建跟销毁的时候的开销,二来也减少了读取文件的次数。又如我们需要维护一个计数器,我们当然不想每次统计的时候都穿透去写DB,我们可以先写到内存当中。还有,在程序开发中,我们常常运用到各种池化技术,我们可以将线程池,连接池作为一个单例,统一进行分配跟管理。

实现

在Java中,我们通常是这么实现单例的,原本我们的类的构造方法是公有的,所以我们无论在哪都能实例化这个类,所以我们必须把共有方法改成私有方法,然后通过一个共有函数来获取这个实例。



我们获取的时候,判断它是否为空,如果为空,那么就初始化一个新的,否则直接返回。相信聪明的朋友已经看到了这里面存在一个小问题,那就是存在并发,一般我们可以使用双if与synchronized关键字,让初始化的代码最多只会执行一次。


优点

因为是全局唯一的,所以减少了类的创建与销毁时候的开销。对于一些资源的实例,可以更加容易进行管理与维护,特别是对于一些配置类,多实例总会出现一些意想不到的错误。

总结

好了,今天我们学习了单例模式,是不是很简单,随手就能实现一个!欢迎大家关注我,共同学习,共同进步。大家的支持是我继续唠嗑的动力。同名公众号(沙茶敏碎碎念)

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

相关阅读更多精彩内容

  • 一、设计模式 1、设计模式分类 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 ...
    codeobj阅读 1,256评论 0 0
  • 概述 单例模式是应用最广的模式之一,在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要...
    刘涤生阅读 4,647评论 0 5
  • 单例模式的定义是:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单例模式是一种常用的模式,有一些对象我们...
    yufawu阅读 3,770评论 0 7
  • 1 单例模式的定义 定义:确保某一个类只有一个实例,自行实例化并且向整个系统提供这个实例。单例模式的通用类图如下所...
    Jerry_1116阅读 4,292评论 0 0
  • 单例模式(Singleton Pattern)是最简单的一种设计模式。下面让我们开始学习单例模式。 一、基本介绍 ...
    冰鉴IT阅读 4,788评论 1 19

友情链接更多精彩内容