首页 > 科技 >

程序员必备设计模式之单例模式

2019-10-04 18:13:09 暂无 阅读:1375 评论:0

不知不觉国庆假期已经由去了一半,是不是又无所作为,胡里胡涂地渡过了几天,哈哈,我也一般。今天,我们来讲一讲一个单例模式。这个应该是最简洁的设计模式了,相信每一个法式员都能学会。

程序员必备设计模式之单例模式

场景

若是我们在代码中需要一个全局类,我们能够让它酿成一个单例。例如,我们在系统的多个处所需要读取一个设置文件,我们并不需要每次都去new一个实例,然后去读文件,只需要维护一个全局的Config类,而且每次使用的时候校验下文件是否调换即可。依靠能够削减类的建立跟销毁的时候的开销,二来也削减了读取文件的次数。又如我们需要维护一个计数器,我们当然不想每次统计的时候都穿透去写DB,我们能够先写到内存傍边。还有,在法式斥地中,我们经常运用到各类池化手艺,我们能够将线程池,保持池作为一个单例,统一进行分派跟治理。实现

在Java中,我们平日是这么实现单例的,原本我们的类的组织方式是公有的,所以我们无论在哪都能实例化这个类,所以我们必需把共有方式改成私有方式,然后经由一个共有函数来获取这个实例。

程序员必备设计模式之单例模式

我们获取的时候,判断它是否为空,若是为空,那么就初始化一个新的,不然直接返回。相信伶俐的同伙已经看到了这里面存在一个小问题,那就是存在并发,一样我们能够使用双if与synchronized要害字,让初始化的代码最多只会执行一次。

程序员必备设计模式之单例模式

长处

因为是全局独一的,所以削减了类的建立与销毁时候的开销。对于一些资源的实例,能够加倍轻易进行治理与维护,稀奇是对于一些设置类,多实例总会显现一些意想不到的错误。总结

相关文章