单例模式是最简单但同时也是很重要的一种设计模式,优点有以下几个方面:

1.当内存占用特别大的类需要频繁地创建销毁时,单例模式可以节省内存和提高性能,例如myBatis里面的sessionFactory
2.当需要对文件做单一读写时,例如同一时间只能同时写入一个windows文本文件,则需要用单例来避免多重读写
缺点是:
1.单例模式没有接口,很难对其进行拓展。
2.不利于测试,没办法直接根据接口mock出一个对象出来测试
最后说下其实现方式主要有饿汉模式和懒汉模式。其中懒汉模式又可以细分为几种,后面再说。
饿汉模式代码:
public Class Singleton{
//在类加载时便实例化自身,饿汉模式
private static Class Singletom instance = new Singleton();
private Singleton(){};
public getInstance(){
return this.instance
}
}
懒汉模式且线程安全代码1
public Class Singleton{
private static Class Singletom instance = null;
private Singleton(){};
public static Singleton getInstance(){
if(instance==null){
//双重检测锁定懒汉模式,如果是直接在getInsance上加锁,因为有99%的情况是线程安全的,会增加性能消耗,故才有双重检测锁定,优化锁,让锁只在1%的情况才执行
synchronized (Singleton.class) {
if (singleton == null)
{
singleton = new Singleton();
}
}
return this.instance
}
}
懒汉模式且线程安全代码2
public Class Singleton{
//静态内部类的方式,应该是因为classLoader的机制使得内部类不会在类
//装载时便实例化,所以可行
private static Class SingletomLoader(){
private static Singleton instance = new Singleton();
}
private Singleton(){};
public static final Singleton getInstance(){
return SingletomLoader.instance
}
}
总结:spring容器中的bean便使用了单例模式,由spring容器控制其bean的生命周期,而如果设置成多例模式的话,则是交由J2EE容器负责其对象的生命周期。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# java
# 设计模式
# 单例模式
# java设计模式之单例模式的详解及优点
# Java设计模式之单例模式详解
# java 设计模式之单例模式
# C++和java设计模式之单例模式
# 简单讲解在Java编程中实现设计模式中的单例模式结构
# 深入解析Java的设计模式编程中单例模式的使用
# 浅析Java设计模式编程中的单例模式和简单工厂模式
# Java设计模式之单例模式实例分析
# java设计模式之单例模式学习
# java设计模式之单例模式
# 是因为
# 很难
# 则是
# 会在
# 没办法
# 对其
# 才有
# 要用
# 很重要
# 几种
# 只在
# 最简单
# 几个方面
# 又可
# 大家多多
# 文本文件
# 为有
# 设置成
# 则需
# 加锁
相关文章:
济南专业网站制作公司,济南信息工程学校怎么样?
,在苏州找工作,上哪个网站比较好?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
如何打造高效商业网站?建站目的决定转化率
网站制作壁纸教程视频,电脑壁纸网站?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
,sp开头的版面叫什么?
如何用狗爹虚拟主机快速搭建网站?
智能起名网站制作软件有哪些,制作logo的软件?
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
安云自助建站系统如何快速提升SEO排名?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
如何配置WinSCP新建站点的密钥验证步骤?
如何做网站制作流程,*游戏网站怎么搭建?
如何将凡科建站内容保存为本地文件?
建站之星安装路径如何正确选择及配置?
宝塔Windows建站如何避免显示默认IIS页面?
七夕网站制作视频,七夕大促活动怎么报名?
如何通过IIS搭建网站并配置访问权限?
建站之星价格显示格式升级,你的预算足够吗?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
建站VPS推荐:2025年高性能服务器配置指南
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
重庆网站制作公司哪家好,重庆中考招生办官方网站?
打鱼网站制作软件,波克捕鱼官方号怎么注册?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
建站之星备案是否影响网站上线时间?
如何用腾讯建站主机快速创建免费网站?
网站制作公司,橙子建站是合法的吗?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
网站制作价目表怎么做,珍爱网婚介费用多少?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
网站设计制作公司地址,网站建设比较好的公司都有哪些?
建站之星logo尺寸如何设置最合适?
官网网站制作腾讯审核要多久,联想路由器newifi官网
如何解决VPS建站LNMP环境配置常见问题?
股票网站制作软件,网上股票怎么开户?
建站主机与服务器功能差异如何区分?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
C++中引用和指针有什么区别?(代码说明)
如何在阿里云通过域名搭建网站?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
临沂网站制作企业,临沂第三中学官方网站?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
如何在宝塔面板中修改默认建站目录?
移民网站制作流程,怎么看加拿大移民官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。