什么是单例设计模式

采取一定手段保证在整个软件系统中某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法,有饿汉式和懒汉式两种

实现饿汉式单例的方法

  1. 将构造器私有化–>防止通过new来创建对象

    private SimpleTon(){}
    
  2. 在类的内部创建一个私有对象,为了能够被静态方法访问,该私有对象也应被修饰为static

    private static SimpleTon simpleTon = new SimpleTon();
    
  3. 暴露一个公共的静态方法提供调用

    public static SimpleTon getInstance(){return simpleTon;
    }
    

完整代码

class SimpleTon{public static void main(String[] args){//类名.静态方法名直接访问SimpleTon simpleTon = SimpleTon.getInstance();}private SimpleTon(){}//为了能够被静态方法访问,所以new的对象也是static的private static SimpleTon simpleTon = new SimpleTon();public static SimpleTon getInstance(){return simpleTon;}
}

饿汉式的单例模式在类加载时就已经将对象创建好了(因为对象是静态的)。没有使用到对象的时候,对象就被创建了,所以叫作饿汉式。若创建了对象但是没有使用它,则会造成内存的浪费,为了弥补该弊端,有了懒汉式的单例模式。

实现懒汉式单例的方法

懒汉式与饿汉式不同,在使用到对象时才创建对象,所以叫懒汉式。

  1. 将构造器私有化–>防止通过new来创建对象

    private SimpleTon(){}
    
  2. 在类的内部创建一个私有对象的引用类型但不赋地址,为了能够被静态方法访问,该私有对象也应被修饰为static

    private static SimpleTon simpleTon;
    
  3. 暴露一个公共的静态方法提供调用

    public static SimpleTon getInstance(){//若simpleTon为null再创建对象if(simpleTon==null){simpleTon = new SimpleTon();}return simpleTon;
    }
    

完整代码

class SimpleTon{public static void main(String[] args){//类名.静态方法名直接访问SimpleTon simpleTon = SimpleTon.getInstance();}private SimpleTon(){}//为了能够被静态方法访问,所以new的对象也是static的private static SimpleTon simpleTon = new SimpleTon();public static SimpleTon getInstance(){//若simpleTon为null再创建对象if(simpleTon==null){simpleTon = new SimpleTon();}return simpleTon;}
}

在调用其他成员时,不会创建该对象。
只有在getInstance时,才创建对象。

SimpleTon simpleTon = SimpleTon.getInstance();

懒汉式是对饿汉式设计模式的优化。不用到该对象时就不会创建该对象,避免了资源的浪费。

饿汉式和懒汉式比较

day12 单例设计模式相关推荐

  1. python基础知识整理 第七节:单例设计模式、异常、模块、包、制作模块、文件

    1.单例设计模式 单例设计模式就是为对象在内存中分配空间的时候,永远只会返回一个唯一的固定的内存空间.这样就能保证在内存中这个类的对象只有唯一的一份,这个就叫做单例.(为对象分配空间使用的是内置方法_ ...

  2. 单例设计模式详解。。。。。。。。。。。

    public class Demo01 { public static void main(String[] args) { // TODO Auto-generated method stub /* ...

  3. 对于java程序语言的单例设计模式讲解

    1.设计模式:解决某一类问题最行之有效的方法.(java中有23种通用设计模式) 单例设计模式:解决一个类在内存中只存在一个对象. 2.单例设计模式有两种方式: 1)饿汉式 先初始化对象.当类一进内存 ...

  4. java软件设计模式只单例设计模式

    概述 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计 ...

  5. AJPFX关于单例设计模式

    单例设计模式优势:保证一个类在内存中的对象唯一性. 比如:多程序读取一个配置文件时,建议配置文件封装成对象.会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中 ...

  6. java饿汉式有啥作用,Java面试 - 什么是单例设计模式,为什么要使用单例设计模式,如何实现单例设计模式(饿汉式和懒汉式)?...

    什么是单例设计模式? 单例设计模式就是一种控制实例化对象个数的设计模式. 为什么要使用单例设计模式? 使用单例设计模式可以节省内存空间,提高性能.因为很多情况下,有些类是不需要重复产生对象的.如果重复 ...

  7. 单例设计模式singleton

    简单引入 单例设计模式作为最简单,最常用的设计模式.一般是这两中写法,这两种写法教科书所谓的标准写法,但是实际上存在不少问题.后面介绍标准写法,以规避这些问题. 1.懒汉式: /*** 问题在于,当多 ...

  8. 面向对象——单例设计模式

    单例设计模式: 解决一个类在内存只存在的一个对象 //getInstance()    返回对象 饿汉式:先初始化对象 class Si{ private static Si s=new SI(); ...

  9. Python单例设计模式

    (1)为什么使用设计模式? 使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. (2)单例设计模式概念 让类创建的对象只有唯一的一个实例,即每次执行  类名() 返回的对象,内存地 ...

最新文章

  1. linux内核7大功能,Linux Kernel5.10十个值得关注的功能
  2. 【经验分享】鹅厂机器学习岗暑期实习面经总结
  3. PHPUnit-附录 A. 断言 (assert)
  4. 状态目标bfs+哈希表 + 三杯水
  5. RANSAC与圆柱拟合
  6. Linux 恢复rm -rf命令所删除的达梦数据文件
  7. PyTorch 1.0 中文文档:torch.onnx
  8. 安全云盘项目(三):3.1 Qt的工具_MVD架构和信号槽原理分析
  9. MATLAB绘图函数ezplot入门详解
  10. 听NBA现场讲解很爽,但啥都听不懂?快来学学术语!
  11. 科学计算机中溢出是指,算术溢出
  12. opencv图像处理学习(六十八)——肤色检测
  13. 断层成像CT和ET重建算法
  14. Lightroom教程_如何导入lr预设?
  15. C++多项式除法的探讨
  16. C# 如何关联键盘按钮 (KeyChar/KeyCode值 KeyPress/KeyDown事件 区别)
  17. 11种常见的时间序列预测方法
  18. 微信小程序完整作品---微信商城
  19. 从零开发校园商铺平台(SSM到SpringBoot)一.开发准备,实体类设计与表创建
  20. 机器学习数据科学包(二)——Pandas入门

热门文章

  1. Gstreamer应用开发实战指南(二)
  2. 区块链-----数据层
  3. 软文撰写有哪些技巧?不掌握技巧写了也是白写
  4. css中margin属性值百分比的使用
  5. 计算机毕业设计(附源码)python幼儿健康管理系统
  6. Go语言基础 结构体
  7. 京东直赔出现漏洞:多个网店卖家被坑
  8. 没有网店经验的小商家开辟小程序商城之路
  9. 趣任务——安利一个企业管理神器
  10. 温度补偿计算公式_自动温度补偿原理与调节方法