(一)单例模式

 java中一共有23种设计模式 : 是开发人员根据不同的代码场景总结出来的不同的实现方法, 归纳为23种代码的设计方法, 单例模式就是其中的一种。

单例模式 : 在整个系统中,一个类型,只有一个对象,所有的场景下使用的都是同一个对象
单例模式的案例 :
        1)回收站——因为整个系统中只有一个回收站, 在任何的场景下删除文件,都是进入到这一个回收站中。
        2)任务管理器 —— ctrl+alt+delete 快捷键可以打开任务管理器, 系统中的所有的进程都在一个任务管理器中管理和展示。

解释:单例模式其实就是一个只能创建一个唯一对象的类

单例模式设计思路 :

  • 私有构造方法 【限制外界创建对象】
  • 在本类中创建出一个唯一的私有对象 【避免外界修改】
  • 对外提供唯一对象的公共访问方式

(二)格式

        1、饿汉式

                -私有的构造方法;

                -在类中创建唯一的使用private  static 修饰的对象

                -对唯一的对象提供对外公共访问方式

public class HungrySingleDemo {private HungrySingleDemo() {}//饿汉式--直接创建私有化的对象private static HungrySingleDemo hsd = new HungrySingleDemo();//提供访问方式public static HungrySingleDemo getInstance() {return hsd;}
}

访问:

public static void main(String[] args) {HungrySingleDemo instance = HungrySingleDemo.getInstance();System.out.println(instance);}

2、懒汉式

实现过程:

1、创建私有构造;

2、在类型中声明一个私有的,静态的类型变量;

3、提供对外的公共访问唯一对象的方法;
               
    注意:1)为了不重复执行创建对象,方法中需要判断对象的值不为null;
     
               2)为了多线程对象唯一,需要在方法中添加同步代码块,保证多线程也只有一个对象;

​​3)由于线程安全的同步代码块性能差,因此需要添加【 双重判断锁】。

public class LazySingleDemo {//提供私有构造private LazySingleDemo() {}//声明一个引用类型的变量private static LazySingleDemo lsd;//对外提供公共的访问方式public static LazySingleDemo show() {//为了解决线程安全问题每次进来都要去对锁进行判断  如果已经有对象 不需要去创建对象//【有对象就不在继续去创建单例的对象直接返回该对象,提升了代码执行效率】if(lsd == null) {synchronized("A") {if(lsd == null) {lsd = new LazySingleDemo();}}}return lsd;}
}public class DemoTest {public static void main(String[] args) {new Thread(new Runnable() {@Overridepublic void run() {LazySingleDemo show = LazySingleDemo.show();System.out.println(show);}}).start();}
}

3、老汉式

        老汉式单例的实现:

                私有构造;类中提供以一个public static final 修饰的对象

package com.tlc.single;
/*** 单例模式之老汉式* @author 喵了个@汪**/public class OlderSingleDemo {//私有构造private OlderSingleDemo() {}//提供唯一的对象的公共的访问方式public static final OlderSingleDemo osd = new OlderSingleDemo();}

访问:

//访问方式:直接类名访问OlderSingleDemo osd = OlderSingleDemo.osd;

以上部分如有错误之处,欢迎各位大佬留言解释,谢谢! 

版权声明:本文为CSDN博主「喵了个@汪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44919512/article/details/119487021

如果看完对你的学习有帮助,感谢点赞支持!

java设计模式—单例模式相关推荐

  1. Java 设计模式 - 单例模式

    Java 设计模式 - 单例模式 作者: 霍英俊 [huo920@live.com] 文章目录 Java 设计模式 - 单例模式 单例设计模式介绍 单例设计模式八种方式 饿汉式 - 静态常量 饿汉式( ...

  2. Java设计模式——单例模式

    单例模式 1.什么是单例模式. 2.单例设计的几种实现方式. 2.1.懒汉式 2.2.饿汉式 2.3.登记式 3.总结 4.建议 1.什么是单例模式. 确保某一个类只有一个实例,并且提供一个全局访问点 ...

  3. Java设计模式——单例模式的七种写法

    单例模式(Singleton) 单例模式(Singleton)是一种常用的设计模式.在Java应用中,单例模式能保证在一个JVM中,该对象只有一个实例存在.这样的模式有几个好处: 1.某些类创建比较频 ...

  4. JAVA设计模式--单例模式

    Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点. 核心知识点如下: (1) 将采用单例设计模式的类的 ...

  5. 我的Java设计模式-单例模式

    就算不懂设计模式的兄弟姐妹们,想必也听说过单例模式,并且在项目中也会用上.但是,真正理解和熟悉单例模式的人有几个呢?接下来我们一起来学习设计模式中最简单的模式之一--单例模式 一.为什么叫单例模式? ...

  6. JAVA设计模式 - 单例模式

    单例模式(Singleton)是软件设计中一种比较常见的 , 相对简单的设计模式 . 1 . 单例模式的定义 所谓单例 , 指的就是单示例 , 即某个类的实现对象有且仅能有一个 , 并提供对外调用的方 ...

  7. 【文末抽书】Java设计模式--单例模式

    来源 :投稿 | 作者 : gyl-coder|原文:阅读原文 在介绍单例模式之前,我们先了解一下,什么是设计模式? 设计模式(Design Pattern):是一套被反复使用,多数人知晓的,经过分类 ...

  8. java设计模式---单例模式

    关于单例模式的文章,其实网上早就已经泛滥了.但一个小小的单例,里面却是有着许多的变化.网上的文章大多也是提到了其中的一个或几个点,很少有比较全面且脉络清晰的文章,于是,我便萌生了写这篇文章的念头.企图 ...

  9. JAVA设计模式-单例模式(Singleton)线程安全与效率

    一,前言 单例模式详细大家都已经非常熟悉了,在文章单例模式的八种写法比较中,对单例模式的概念以及使用场景都做了很不错的说明.请在阅读本文之前,阅读一下这篇文章,因为本文就是按照这篇文章中的八种单例模式 ...

最新文章

  1. When Cyber Security Meets Machine Learning 机器学习 安全分析 对于安全领域的总结很有用 看未来演进方向...
  2. 史上最详细的客服系统产品落地|后台产品经理的工作实例,有那么苦吗?
  3. Mysql之一:mysqldump和LVM逻辑卷快照
  4. 世界是有生命的(通向财富自由之路学习笔记十五)
  5. C与C++在const用法上的区别
  6. java heap buffer direct buffer_java NIO - DirectBuffer 和 HeapBuffer
  7. 在这个功能上,iOS 落后 Android 了
  8. 基于KELI5 新建一个STM32 project流程
  9. 《动手学深度学习》学习总结
  10. 服务机器人分类包括哪些?
  11. 额。。万恶之源就是c
  12. 桂林电子科技大学校园网登录数据包抓取教程实现路由器每天自动登录
  13. [解决问题]Android Studio报错:some kotlin libraries attached to this project were compiled with a newer kot
  14. 实现微信浏览器内打开App Store链接
  15. mybatis mapperLocations配置失效
  16. 是什么意思怎么读_知识丨南无怎么读?是什么意思?
  17. jquery 遍历java对象_jquery中object对象循环遍历的方法
  18. 一款公历转农历节气以及天干地支的js代码
  19. 个人微信/支付宝免签支付系统源码
  20. 无法安装X64 在计算机找到X32,怎么看电脑适合装32位还是64位

热门文章

  1. 华为8月9日鸿蒙红包,华为正是宣布,“鸿蒙”系统8月9日上线,来看看有没有你的手机...
  2. 动态规划——01背包问题 看此一篇文章就够了
  3. 网易云深度学习第一课第三周编程作业
  4. linux虚拟机lvm扩容,LVM扩容-----给虚拟机添加空间
  5. butter滤波器是iir吗_IIR低通滤波器求改
  6. 如何在Oracle数据库内格式化SQL或PL/SQL ?
  7. 实用教程丨官方下载Oracle各版本安装软件及补丁包
  8. Oracle/MySQL/PostgreSQL考题等你挑战(附假期活动获奖名单)
  9. 从0到1构建支撑企业自动化运维体系
  10. 再也不用担心无法将中断绑定到多队列网了