全网整合营销服务商

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

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

java 单例模式(饿汉模式与懒汉模式)

java 单例模式

饿汉式单例

对于饿汉模式,我们可这样理解:该单例类非常饿,迫切需要吃东西,所以它在类加载的时候就立即创建对象。

懒汉式单例类

对于懒汉模式,我们可以这样理解:该单例类非常懒,只有在自身需要的时候才会行动,从来不知道及早做好准备。它在需要对象的时候,才判断是否已有对象,如果没有就立即创建一个对象,然后返回,如果已有对象就不再创建,立即返回。

单例设计模式常用于JDBC链接数据库

注意:

1 我们常用的是第一种饿汉式,因为:

 (1)既然采用了单例设计模式,就是为了使用单例类的对象,所以就先把他实例化出来.

 (2)在懒汉式中存在一定的安全隐患,需要加上同步关键字synchronized,否则就谈不上单例了,但是加上了synchronized效率就稍逊了

2 在第一种办法中,代码private static final Single SINGLE=new Single();为什么有final呢?

因为被final关键字修饰的类,不能被继承,被final修饰的成员变量不可以被修改.

此处用了final为了强化和重点突出:"同一对象"这个概念——只有这么一个对象,而且它是不可以被修改的.

如果不用final修饰 Single SINGLE那么就会有这么一种情况:业务很复杂,在不经意间就修改了此对象,造成各种错误.

第一种(饿汉式):

思路:

(1)不让其他类建立该类的对象.即将构造函数设置为私有!
(2)自定义一个本类对象
(3)将自定义的对象提供出去.即定义一个get方法,返回值为此类的对象。

 分析:

 第一步:将单例类中构造函数私有化了且利用一个get()函数向外提供此类的对象,所以其他类无法构造此类的对象。
 第二步:但其他类要想调用此单例类里的方法,于是只有采用内名.方法名()来实现,这就要求这个方法必须是静态static的。
 第三步:又因为静态方法只能访问静态成员!所以要将SINGLE设置为静态的

public class SingleDemo { 
  public static void main(String[] args) { 
     Single s1=Single.getSingle(); 
     s1.setNumber(44); 
     Single s2=Single.getSingle(); 
     s2.setNumber(55); 
     System.out.println("s1.number="+s1.number); 
     System.out.println("s2.number="+s2.number); 
     if(s1.equals(s2)){ 
        System.out.println("s1与s2是同一对象即:s1==s2");//if条件成立 
       } 
   } 
} 
 
 
class Single{ 
  int number; 
  public int getNumber() { 
       return number; 
     } 
  public void setNumber(int number) { 
       this.number = number; 
     } 
  private Single(){};//第一步 
  private static final Single SINGLE=new Single();//第三步 
  public static Single getSingle(){//第一步和第二步 
       return SINGLE; 
  } 
} 

第二种(懒汉式):

package cn.com; 
public class SingleDemo2 { 
   public static void main(String[] args) { 
      Single s1=Single.getSingle(); 
      s1.setNumber(44); 
      Single s2=Single.getSingle(); 
      s2.setNumber(55); 
      System.out.println("s1.number="+s1.number); 
      System.out.println("s2.number="+s2.number); 
      if(s1.equals(s2)){ 
        System.out.println("s1与s2是同一对象即:s1==s2");//if条件成立 
       } 
     } 
 
 
} 
 
 
class Single{ 
   int number; 
   public int getNumber() { 
       return number; 
     } 
   public void setNumber(int number) { 
       this.number = number; 
     } 
   private Single(){}; 
   private static Single SINGLE=null; 
   public static synchronized Single getSingle(){//多线程时加上synchronized是关键!!! 
      if(SINGLE==null){ 
         SINGLE=new Single(); 
         return SINGLE; 
       } 
      else{ 
         return SINGLE; 
        } 
   } 
} 


以上就是对java 单例设计模式的详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java单例模式  # java  # 饿汉模式与懒汉模式  # Java单例模式的应用示例  # JAVA实现单例模式的四种方法和一些特点  # Java单例模式的6种实现方式详解  # java单例模式使用及注意事项  # JAVA多线程并发下的单例模式应用  # 一篇文章教你使用枚举来实现java单例模式  # java设计模式之单例模式学习  # Java中单例模式的7种写法  # Java实现单例模式的五种方式总结  # 此类  # 第一种  # 已有  # 不可以  # 自定义  # 它在  # 设置为  # 第二步  # 第三步  # 的是  # 上了  # 如有  # 才会  # 把他  # 它是  # 本类  # 我们可以  # 这就  # 用了  # 希望能 


相关文章: 企业微网站怎么做,公司网站和公众号有什么区别?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  学校建站服务器如何选型才能满足性能需求?  ,怎么用自己头像做动态表情包?  如何选择高效响应式自助建站源码系统?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  jQuery 常见小例汇总  常州企业建站如何选择最佳模板?  如何快速搭建支持数据库操作的智能建站平台?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  内网网站制作软件,内网的网站如何发布到外网?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  建站主机如何选?高性价比方案全解析  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  Java解压缩zip - 解压缩多个文件或文件夹实例  建站之星代理平台如何选择最佳方案?  建站之星会员如何解锁更多建站功能?  黑客如何利用漏洞与弱口令入侵网站服务器?  如何通过老薛主机一键快速建站?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  建站之星代理商如何保障技术支持与售后服务?  c# 在ASP.NET Core中管理和取消后台任务  网站制作价目表怎么做,珍爱网婚介费用多少?  平台云上自助建站如何快速打造专业网站?  定制建站价位费用解析与套餐推荐全攻略  音响网站制作视频教程,隆霸音响官方网站?  长沙做网站要多少钱,长沙国安网络怎么样?  全景视频制作网站有哪些,全景图怎么做成网页?  如何选择适合PHP云建站的开源框架?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  如何在Golang中指定模块版本_使用go.mod控制版本号  如何用低价快速搭建高质量网站?  如何挑选优质建站一级代理提升网站排名?  免费ppt制作网站,有没有值得推荐的免费PPT网站?  如何通过服务器快速搭建网站?完整步骤解析  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何在VPS电脑上快速搭建网站?  公司门户网站制作流程,华为官网怎么做?  公司网站制作价格怎么算,公司办个官网需要多少钱?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  如何通过免费商城建站系统源码自定义网站主题与功能?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  如何在IIS服务器上快速部署高效网站?  如何快速搭建安全的FTP站点?  成都网站制作公司哪家好,四川省职工服务网是做什么用? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。