全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

java设计模式之单例模式解析

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

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小时内与您取得联系。