一. 单例模式概述

单例模式(Singleton),也叫单子模式,是一种常用的设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候,整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息,显然,这种方式简化了在复杂环境下的配置管理。

特别地,在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。事实上,这些应用都或多或少具有资源管理器的功能。例如,每台计算机可以有若干个打印机,但只能有一个 Printer Spooler(单例) ,以避免两个打印作业同时输出到打印机中。再比如,每台计算机可以有若干通信端口,系统应当集中 (单例)管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。总之,选择单例模式就是为了避免不一致状态,避免政出多头。

综上所述,单例模式就是为确保一个类只有一个实例,并为整个系统提供一个全局访问点的一种方法。

二:饿汉式HungrySingLeton

懒汉:一个类只允许被创建1次对象
1:构造器私有化
2:初始化一个私有静态的对象
3:提供一个公开的静态的获取对象的方法

注意
1:对象产生的时间:类加载的时候就被创建了
优点:代码简单,安全性较高
缺点:创建对象时机过早,有可能会浪费内存空间

public class Demo {public static void main(String[] args) {Student stu1 = Student.newInstance();Student stu2 = Student.newInstance();Student stu3 = Student.newInstance();System.out.println(stu1);System.out.println(stu2);System.out.println(stu3);}}

public class Student {private static Student student = new Student();public static Student newInstance(){return student;}private Student(){System.out.println("创建对象");}}

三: 懒汉式LazySingLeton

懒汉式:什么时候用什么时候创建对象
1:构造器私有化
2声明一个私有的静态的对象变量
3:提供一个公开的静态获取对象的方法

注意:创建时间恰当
注意:多线程的情况下,容易出现多个对象

使用双重校验法

public class Demo {public static void main(String[] args) {Student stu1 = Student.newInstance();Student stu2 = Student.newInstance();Student stu3 = Student.newInstance();System.out.println(stu1);System.out.println(stu2);System.out.println(stu3);}}

public class Student {private static Student student;public static Student newInstance(){//提高效率,如果第一次创建对象成功,后面就不用进入同步当中,直接返回对象即可if(student==null){synchronized (Student.class) {//如果是第一次调用方法,进入if,创建对象if(student==null){student = new Student();}}}return student;}private Student(){}}

Java中单例模式----饿汉式(HungrySingLeton)和懒汉式(LazySingLeton)相关推荐

  1. Java中单例模式—饿汉式和懒汉式

    所谓单例模式就是为了确保类在内存中只有一个对象,之所以会出现单例模式是因为,单例模式在系统内存中只存在一个对象,可以节约资源 目录 一.饿汉式 二.懒汉式 一.饿汉式 该方式在开发中是经常用的,因为这 ...

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

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

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

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

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

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

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

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

  6. java 单例模式 ---饿汉式懒汉式

    目录 单例设计模式 饿汉式 懒汉式 饿汉式vs懒汉式 结语 单例设计模式 所谓单例设计模式,就是采取一定的方法在整个软件系统中,对某个类只能存在一个对象实例 1.单例类只能有一个实例. 2.单例类必须 ...

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

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

  8. 单例模式饿汉式/懒汉式的区别

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

  9. 单例测试模式中【饿汉式】与【懒汉式】的区别

    package day25.thread;/** /*** @author Mr Chen* @create 2018-10-09 18:37* 单例测试模式:保证类在内存中只有一个对象*/ publ ...

最新文章

  1. Unix_Linux系统定时器的应用(案例)
  2. OpenStack社区正式接受UnitedStack有云Steth项目
  3. JVM--对象的实例化过程
  4. Java是先难后易吗_在解决问题的时候,是先难后易还是先易后难?
  5. linux7.0启用图形界面,CentOS 7 设置图形界面启动
  6. 租号平台正在把“未成年”变成“大人”
  7. 7款优秀的开源数据挖掘工具
  8. CentOS6_mini_安装后基本配置
  9. [转]C++日志系统log4cxx使用总结
  10. 7340怎么更换墨盒_打印显示墨盒托架被卡住怎么办?请按下边步骤正确解决
  11. 计算机能否代替老师英语作文,雅思大作文范文:电脑不可取代老师
  12. 芯片(架构)顶会截稿时间和开会时间记录(ISSCC、VLSI、ISCA、HPCA、MICRO、DAC等)
  13. ViewHolder的使用
  14. 我们的眼睛用得太狠了
  15. 股票中阿尔法和贝塔都什么意思?
  16. w7设置双显示器_win7系统设置双显示器多屏幕模式的操作方法
  17. 21根火柴常胜将军c语言,常胜将军算法
  18. tbf格式用什么打开_TBF的完整形式是什么?
  19. Java中有哪些锁,区别是什么
  20. 用matlab计算信源信息熵,计算离散信源的熵matlab实现

热门文章

  1. 什么事webshell?
  2. 事业单位b类计算机专业测试考什么,事业单位考试综合素质测试考试内容_综合素质测试考什么...
  3. codeforces 141D Take-off Ramps
  4. uni-app【数据缓存API】
  5. 程序员你不懂爱,博客园就要倒下来。。
  6. win10休眠_转载 || 维修站教你最牛的win10优化设置小技巧!
  7. 关于如何将自己的网站主页,提交到百度,使其可以在百度搜索中出现的方法
  8. python就业前景如何_Python就业前景如何?三大就业岗位分享
  9. windows系统重装(安装)第三篇——利用PE系统下的WinNTSetup工具重装系统
  10. 内存泄漏的3个解决方案与原理实现,掌握一个轻松应对开发丨内存池|mtrace||API实现|框架封装|中间件|异步请求|连接池