所谓单例模式就是为了确保类在内存中只有一个对象,之所以会出现单例模式是因为,单例模式在系统内存中只存在一个对象,可以节约资源

目录

一、饿汉式

二、懒汉式


一、饿汉式

该方式在开发中是经常用的,因为这个方式不容易出错

程序代码:

package com.hezhiying;public class Main {public static void main(String[] args) {// 创建的这两个对象都是Student类中的sStudent s1 = Student.getStudent();Student s2 = Student.getStudent();System.out.println(s1 == s2);}
}class Student {// 让该方法私有,这样外界就不能访问了private Student() {};// 由于外界不能创建对象,故自己创建一个,为了不让外界修改s的值,故加个privateprivate static Student s = new Student();// 提供一个公共的访问方式,需静态方法,以使类名直接调用,以达到外界能够访问public static Student getStudent() {return s;}
}

运行结果:

二、懒汉式

该方法在开发中不容易用到,但是如果你去找工作,可能会被面试,因为这有个小坑,就是关于多线程的坑,在代码中有注释

程序代码:

package com.hezhiying;public class Main {public static void main(String[] args) {// 创建的这两个对象都是Student类中的sStudent s1 = Student.getStudent();Student s2 = Student.getStudent();System.out.println(s1 == s2);}
}class Student {// 让该方法私有,这样外界就不能访问了private Student() {};// 由于外界不能创建对象,故自己创建一个,为了不让外界修改s的值,故加个privateprivate static Student s = null;// 提供一个公共的访问方式,需静态方法,以使类名直接调用,以达到外界能够访问public synchronized static Student getStudent() {// 在这里,在多线程中可能会在线程一进了if,还没进行创建对象,// 线程二也进来了,这就会导致创建了两个对象,也就不是单例模式了,故需要用synchronizedif (s == null) {s = new Student();}return s;}
}

运行结果:

Java中单例模式—饿汉式和懒汉式相关推荐

  1. Java中单例模式----饿汉式(HungrySingLeton)和懒汉式(LazySingLeton)

    一. 单例模式概述 单例模式(Singleton),也叫单子模式,是一种常用的设计模式.在应用这个模式时,单例对象的类必须保证只有一个实例存在.许多时候,整个系统只需要拥有一个的全局对象,这样有利于我 ...

  2. 单例模式饿汉式与懒汉式详解

    单例模式饿汉式与懒汉式详解 步骤: 私有构造方法,使得在类的外部不能调用此方法,限制产生多个对象 类初始化时,区分饿汉式与懒汉式的区别 对外部提供调用方法,将创建的对象返回,只能通过类来调用 饿汉式: ...

  3. Java-Day12 面向对象的三大特征之封装、继承,单例模式(饿汉式、懒汉式)、方法重写 (覆盖)、注解 (annotation)、super关键字、对象的创建流程超详细

    目录 1. 面向对象的三大特征之封装 1.1 封装的含义 1.2 封装的目的 1.3 封装的优点 1.4 封装的实现过程 1.5 拓展知识:JavaBean 2. 面向对象的三大特征之继承 2.1 继 ...

  4. Singleton模式(单例模式) 饿汉式和懒汉式

    目的:整个应用中有且只有一个实例,所有指向该类型实例的引用都指向这个实例. 好比一个国家就只有一个皇帝(XXX),此时每个人叫的"皇帝"都是指叫的XXX本人; 常见单例模式类型: ...

  5. 单例模式——饿汉式和懒汉式

    单例模式:一个类只允许存在唯一的对象,并提供它的访问方式 创建思路: 1.禁止在类的外部创建对象:私有化构造函数 2.在类的内部提供唯一的对象:静态成员变量 3.提供访问唯一对象的方法:静态成员函数 ...

  6. 【学习笔记】【C++整理A】【总】单例模式-饿汉式、懒汉式;

    文章目录 一.语言分类: 三.基础A:- 函数重载.默认参数.extern "C".重复包含 1.函数重载 2.默认参数 3.extern "C" 4.防止重复 ...

  7. 单例模式之饿汉式与懒汉式

    常见的单例模式 本文仅讲解单例模式中的饿汉式和懒汉式(双检索) 文章目录 常见的单例模式 前言 一.单例模式的优缺点 二.详解懒汉式.饿汉式 1.饿汉式 2.懒汉式(双检锁) 总结 前言 先来简单的说 ...

  8. Java实现单例模式之饿汉式、懒汉式、枚举式,带测试。

    Java实现单例的3种普遍的模式,饿汉式.懒汉式.枚举式. 具体代码如下: package com.lcx.mode;/*** * 饿汉式单例,不管以后用不用这个对象,我们一开始就创建这个对象的实例, ...

  9. java学习之单例模式(饿汉式与懒汉式)

    ---恢复内容开始--- 设计模式:解决某一类问题最行之有效的方法 java中有23种设计模式 今天学习其中一种:单例设计模式:解决一个类在内存只存在一个对象 想要保证对象唯一. 1.为了避免其他程序 ...

最新文章

  1. Docker 入门系列(3)- Docker 容器(创建、启动、终止、进入、删除、导入、导出容器、容器和镜像转化)
  2. 手把手教你使用 YOLOV5 训练目标检测模型
  3. ipad html 自定义裁剪,canvas裁剪clip()函数的具体使用
  4. 做程序猿的老婆应该注意的一些事情
  5. router3 BGP2 属性及选路
  6. python decorator. decorator_Python装饰器(decorator)
  7. 牛客题霸 [字符串的排列] C++题解/答案
  8. Linux系统下的几种终端设备文件
  9. 《Java虚拟机原理图解》1.3、class文件里的訪问标志、类索引、父类索引、接口索引集合...
  10. Java线程池—ThreadPool简介
  11. 计算机启动windows程序,win7系统开机自动运行程序怎么设置|win7电脑开机启动程序的方法...
  12. 【数据库原理】关系-Relationship
  13. 概率论考点之概率的性质(全概公式及贝叶斯公式)
  14. PS查看设计图中文字大小,颜色
  15. matlab级数求和阶乘,(阶乘)数列求和 - 数学 - 小木虫 - 学术 科研 互动社区
  16. Docker--网络模式
  17. Python基于深度学习算法实现图书推荐系统项目实战
  18. epoll 主从反应堆模式代码实现
  19. 【时序】卷积自注意力 LogSparse Transformer 论文笔记
  20. 123部奥斯卡影片名称中英文对照

热门文章

  1. 陶哲轩实分析 命题 7.3.4 (Cauchy 准则) 证明
  2. 基础管理薄弱服装企业如何实施ERP
  3. 幸福的源泉:Life is about choices 幸福可以选择
  4. 墨刀 vs Axure RP
  5. TCP/UDP通信解疑
  6. spring 之 BeanPostProcessor
  7. DevExpress DXperience 的ASPxFilterControl 不显示 Like 菜单的方法
  8. SPOJ DQUERY 求区间内不同数的个数 主席树
  9. Oracle用户角色权限管理
  10. [和管子对话] 2 2007-4-6/抽象类和接口的谁是谁非