单例设计模式的定义:单例设计模式是一种软件设计模式,在它的核心包含一个称为单例类的核心类。

核心便是希望一个类只有一个对象。 

如何实现类在内存中只有一个对象呢?

第一步:构造私有;
第二步:本身提供一个对象;
第三步:通过公共的方法让外界访问。

以下就是实现单例类:

static关键字修饰对象,则该对象就变成静态资源,共享,形象点说,她就失足了,谁都可以上!
class Single{private static Single s = new Single(); //声明本类的引用类型变量,并且使用该变量指向本类对象。使用static关键字使得s在内存中只有一份。private Single(){} //声明私有构造函数,使得在本类外不能实例化本类对象public static Single getSingleObject(){return s;}//提供一个公共的静态的方法,可以返回这个唯一的对象。
}
class Demo{public static void main(String []args){Single s1 =Single.getSingleObject();Single s2 =Single.getSingleObject();System.out.Println("是一个对象吗?"+(s1 == s2));//==用来判断这两个对象的内存地址是否一样,如果一样,说明是同一个对象。
    }
}

以上的单例设计模式称为饿汉模式,意思是不管需不需要这个对象,但在类文件加载的时候这个对象已经被实例化了,如果这个类对象至始至终都没有使用,则这个类对象就会浪费内存空间,因此有了以下的懒汉模式,也就是在使用的时候,才创建对象,代码实现如下:

class Single{private static Single s;//声明一个该对象的引用,但不进行实例化,static不初始化时,s默认的值为nullprivate Single(){}//保证只能在本类实例化对象public static synchronized  Single getSingleObject(){if(s==null){ //判断该引用是否为空s = new Single(); }return s;}
}
class Demo{public static void main(String []args){Single s1 = Single.getSingleObject();Single s2 = Single.getSingleObject();System.out.pringln("是同一个对象吗?"+(s1==s2));}
}

以上为懒汉单例设计模式的实现,但是该模式有个缺陷,就是在多线程访问的时候有一定的安全隐患。所以目前还是推荐使用饿汉模式。

转载于:https://www.cnblogs.com/zhaoyanhaoBlog/p/9181936.html

Java单例设计模式(实现Java的一个类只有一个对象)相关推荐

  1. java 单例设计模式 [

    为了保证类在内存中只能有一个对象,构造函数需要private外面不实例化对象,提供一个公共方法返回一个实例 //饿汉式 class Single{ //需要是static的,getInstance方法 ...

  2. java实现一个单例设计模式_Java正确实现一个单例设计模式的示例

    Java正确实现一个单例设计模式的示例 发布于 2021-1-12| 复制链接 分享一篇关于关于Java正确实现一个单例设计模式的示例,小妖觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的 ...

  3. java单例设计模式_Java设计模式之单例模式详解

    在Java开发过程中,很多场景下都会碰到或要用到单例模式,在设计模式里也是经常作为指导学习的热门模式之一,相信每位开发同事都用到过.我们总是沿着前辈的足迹去做设定好的思路,往往没去探究为何这么做,所以 ...

  4. java单例设计模式懒汉_Java设计模式之单例设计模式(懒汉、饿汉)

    [toc] Java设计模式之单例设计模式(懒汉.饿汉) 相信面试过的初中级Java开发的朋友可能都有遇到过单例设计模式的笔试题吧,如果之前没有背下来或者不理解,可以看看下面这篇文章,应该足够应付笔试 ...

  5. java 单例内部类_9 java的关键字static、单例设计模式、初始化块、关键字final、抽象类、接口、内部类...

    static关键字 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用.我们有时 ...

  6. java单例设计模式

    单例模式的概念 单例类只有一个实例,并且只由自己创建,实例化后向整个系统提供自己的实例. 单例设计模式主要分为2种:懒汉式和饿汉式.2者的区别在于初始化的时间不同. 像线程池,缓存,日志等都被设计成单 ...

  7. Java|深入研究Java单例设计模式

    欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 简介 看到标题可能有人会问什么是单例模式呢? 在程序设计过程中 ...

  8. java单例设计模式之懒汉式和饿汉式

    单例模式 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法. 如果我们要让类在一个虚拟机中只能产生一个对象: 将类的 ...

  9. JAVA单例设计模式简单实现(懒汉与恶汉),多例设计模式的简单实现

    单例设计模式饿汉式 package Singleton; public class Singleton { private static final Singleton INSTANCE = new ...

最新文章

  1. 习题4-3 求分数序列前N项和 (15 分)
  2. websocket实现方式
  3. PTA 09-排序3 Insertion or Heap Sort (25分)
  4. Winform控件拖动
  5. Xftp连接linux(ubuntu)时提示ssh服务器拒绝了密码,请再试一次
  6. .NET Core开发实战(第23课:静态文件中间件:前后端分离开发合并部署骚操作)--学习笔记(上)...
  7. python编程a的x次方_「Python 面试」第四次更新
  8. java 极客_Java极客思维
  9. Velocity 模板引擎介绍
  10. python软件源 临时使用清华源
  11. 【渝粤教育】国家开放大学2018年春季 0267-21T摄影技术 参考试题
  12. ZZULIOJ-1047,对数表(Python)
  13. matlab矩阵怎么进行相加,matlab矩阵如何运算相加
  14. php求闰年的公式,php判断闰年(闰年计算方法)
  15. obtain,get,gain有什么区别
  16. 【前沿技术RPA】 一文学会用UiPath实现自动发送电子邮件(Email Automation)
  17. 2017--年终总结
  18. 什么是Base64 编码,Base64 编码有哪些优缺点?
  19. 爱情树代码python_送男朋友礼物送什么比较有意义?
  20. ZYNQ7010 CAN的官方例程改为XCANPS_MODE_NORMAL模式,程序没跑通

热门文章

  1. qt5 linux 控制台 乱码,qt5.12 解决显示中文乱码问题
  2. mysql5.7.20非安装版_mysql5.7.20\5.7.21免安装版安装配置教程
  3. python unittest断言大全_Python-unittest框架 断言使用
  4. 安卓能不能安装jar_Sentaurus TCAD安装之jedit+TCAD宏包
  5. 怎么判断一个字符串的最长回文子串是否在头尾_LeetCode5:最长回文子串
  6. object detection
  7. DICOM医学图像处理:DICOM存储操作之“多幅BMP图像数据存入DCM文件”
  8. 全球及中国甲基全氟异丁醚行业竞争现状与投资战略前景研究报告2022版
  9. 中国牡蛎碳酸钙市场需求现状调研及十四五投资风险评估报告2022-2028年版
  10. 浅谈计算机硬件维护 论文,浅谈计算机硬件维护的论文(2)