单例模式指的是一个类,在JVM内只有一个实例,就像LOL中只有一个大龙,所以这个类只能实例化一次。

单例模式分为懒汉式单例模式和饿汉式单例模式。

饿汉式单例模式:大龙只有一只,通过私有化构造方法,使得外部无法通过new得到新的实例。大龙提供了一个public static的getinstance()方法,外部调用通过这个方法获取对象,而且每次都会获取同一个对象,从而达到无论如何都会创建一个实例的目的。

懒汉式单例模式:与饿汉式单例模式不同的是只有在调用getinstance()的时候,才会创建实例。

懒汉式单例模式和饿汉式单例模式的区别是什么?

饿汉式是立即加载的方式,无论是否会用到这个对象,都会加载。
如果在构造方法里写了性能消耗较大,占时较久的代码,比如建立与数据库的连接,那么就会在启动的时候感觉稍微有些卡顿。

懒汉式,是延迟加载的方式,只有使用的时候才会加载。 并且有线程安全的考量(鉴于同学们学习的进度,暂时不对线程的章节做展开)。
使用懒汉式,在启动的时候,会感觉到比饿汉式略快,因为并没有做对象的实例化。 但是在第一次调用的时候,会进行实例化操作,感觉上就略慢。

看业务需求,如果业务上允许有比较充分的启动和初始化时间,就使用饿汉式,否则就使用懒汉式

单例模式的三元素:

  • 1.构造方法私有化
  • 2.静态属性指向实例
  • 3.public static的getinstance()方法,返回静态属性

Java单例模式(类和对象)相关推荐

  1. java演练 类与对象 给我一个数字还你一个字符串

    java演练 类与对象 给我一个数字还你一个字符串 视频 https://www.ixigua.com/i6870502014800003598/ 代码 类 public class Game {pu ...

  2. java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用

    java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用 七十年代,IBM的Smalltalk语言最先推广面向对象,后来C语言变为C++,后来C++又产生了J ...

  3. java学习--类与对象

    文章目录 java学习--类与对象 类的定义与对象的使用 类的私有成员的使用 java学习–类与对象 类的定义与对象的使用 类的定义与对象的使用 类的定义步骤: public 类名: //定义成员变量 ...

  4. java面向对象-类和对象

    Java面向对象笔记 文章目录 Java面向对象笔记 java面向对象 类和对象 什么是类 定义 创建和使用 公式 构造方法 什么是构造方 怎么定义和使用构造方法 实列 This关键字 什么是成员变量 ...

  5. Java基础--类与对象

    2019独角兽企业重金招聘Python工程师标准>>> 一.类与对象 类是对一类事物描述,是抽象的.概念上的定义.   对象是实际存在的该类事物的每个个体,因而也称实例(instan ...

  6. java笔记类与对象3.7-3.10 2020.3.17

    List,是个接口 ArrayList才是动态数组类 3.7垃圾回收机制 this的三种用法 this(1,2,3)会调用构造器 下图三个对象都是垃圾对象 让系统回收垃圾对象 回收的时候,会调用自己的 ...

  7. Java 基础——类和对象

    Java作为一种面向对象语言.支持以下基本概念: •多态 •继承 •封装 •抽象 •类 •对象 •实例 •方法 •消息解析 本节我们重点研究类与对象的概念. 对象:对象是类的一个实例,有状态和行为.例 ...

  8. java里类包含对象对不对_Java类中的对象

    当创建一个类时,需要创建一种新的数据类型.获得类的对象的过程包含两个步骤.首先,必须声明该类类型的一个变量,这种声明只是一种简单声明,对计算机来讲,并没有实际的物理含义:然后,需要创建一个对象的实际物 ...

  9. Java程序设计语言基础05:Java的类和对象

    目录 1. 类的定义与组成 1.1 类的定义 2.2 类的使用 2. 类.对象和引用 2.1 类 2.2 对象 2.3 引用 3. 类的知识扩展 3.1 成员变量初始值 3.2 在类中定义自己的引用 ...

  10. Java学习——类和对象(上)

    目录 一.类和对象 1.类的特点 2.类和对象的关系 3.总结 二.类的定义 1.类的定义步骤 2.代码示例 三.对象的使用 1.创建对象 2.使用对象 3.单个对象(代码) 4.多个对象(代码) 四 ...

最新文章

  1. mysql在mac下的data目录_Mysql在mac中目录结构用法命令
  2. 软件构造学习笔记-第四周
  3. 飞鸽传书2007绿色版 唯一官方下载地址
  4. python提供了两种基本的数值类型_python数据分析(一) python当中的数据类型--数字和常用函数...
  5. Kubernetes 之 MySQL 持久存储和故障转移(十一)
  6. java比较时间大小
  7. 直播教程 || 虚拟直播设备清单分享,建议收藏~
  8. html中怎么写小箭头,纯CSS代码实现各种小箭头
  9. 我的计算机c盘计划,我的电脑C盘空间不够,该怎么样清理?
  10. 计算机课还无聊吗,《快乐星球Ⅴ》电脑课还可以这样?
  11. 《周志明的软件架构课》学习笔记 Day16
  12. 全面剖析亚马逊,让你开店不迷茫!
  13. 时间序列分析这件小事(五)--MA模型
  14. linux apache python wsgi,linux下apache2+django+mod_wsgi方式配置web站点
  15. 致毕业生:那些年我们错过的“BAT” 1
  16. 【机器学习入门】(9) 逻辑回归算法:原理、精确率、召回率、实例应用(癌症病例预测)附python完整代码和数据集
  17. “打卡上班”第二周,我这样......
  18. IIC中的应答和非应答
  19. 软件实施:应标现场讲解
  20. Android百度地图定位定到了海里,定到了非洲

热门文章

  1. 图片片转换成位深度为1的单色bmp照片
  2. 支付宝和淘宝网的一些伦理道德问题
  3. 中|元宇宙龙头股歌尔自废,资本为何还在追捧
  4. 荒野大镖客ol 服务器位置,荒野大镖客2ol盗贼在什么位置?盗贼具体位置分享
  5. 2021-05-13 Redis面试题 MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
  6. lua 令牌桶 源码_Redis和Lua脚本(实现令牌桶限流)
  7. 三边测量定位算法C语言实现
  8. selenium+numpy+opencv突破滑块验证码实现QQ空间登入
  9. React-Native调用系统分享组件Share组件的使用
  10. c语言有向网络介数,SNA社交网络算法