当前位置: 首页 > news >正文

【java】设计模式——单例模式

  1. 单例模式要点
    • 一个类只需要一个实例化对象;
    • 必须自行创建实例;
    • 必须自行向整个系统提供这个实例
  2. 实现
    • 只提供私有构造方法;
    • 有一个该类的静态私有对象;
    • 提供一个静态公有方法用于创建、获取静态私有对象;
    分析:
    • 私有构造方法->不能随意创建实例;
    • 静态私有对象:确保只有一个实例对象
    • 静态公有方法->提供一个外部接口,可直接通过类名调用该方法,方法内部能直接调用静态对象;
  3. 饿汉式实现方法:在创建类时实例化
// 在创建类时直接实例化,空间换时间
public class SingletonOne{//1. 私有构造private SingletonOne(){}//2. 在创建该类时初始化静态私有对象private static SingletonOne instance = new SingletonOne();// 3.提供静态公有方法返回静态实例对象public static SingletonOne getInstance(){return instance;}
}
  1. 懒汉式实现方法:静态公有方法中实例化
// 在调用静态公有方法后,才完成对象的实例化
public class SingletonTwo{//1. 私有构造private SingletonOne(){}//2. 在创建该类时初始化静态私有对象private static SingletonTwo instance = null;// 3.提供静态公有方法返回静态实例对象public static SingletonOne getInstance(){if(instance==null) // 保证只会实例化一次instance = new SingletonTwo();return instance;}
}
  1. 饿汉式 vs 懒汉式
单例模式的实现方法实例化对象的时间空间特点时间特点线程安全
饿汉式在类加载时候完成空间占用时间长在第一次使用时加载速度快线程安全
懒汉式在第一次调用共有方法时完成不会造成内存空间浪费在第一次使用时加载时间相对慢线程不安全
http://www.lryc.cn/news/122115.html

相关文章:

  • 【编织时空一:探究顺序表与链表的数据之旅】
  • Tesseract用OpenCV进行文本检测
  • XLua案例学习
  • Linux:Shell编程之免交互
  • 最强自动化测试框架Playwright(18)- 执行js脚本
  • 阿里云云主机_ECS云服务器_轻量_GPU_虚拟主机详解
  • [QT编程系列-41]:Qt QML与Qt widget 深入比较,快速了解它们的区别和应用场合
  • springboot 使用zookeeper实现分布式锁
  • ViewUI表格Table嵌套From表单-动态校验数据合法性的解决方法
  • 服务器安装Tomcat
  • 【Apollo】自动驾驶的平台背景,平台介绍
  • docker 安装与配置
  • Titanic--细节记录三
  • k8s-----集群调度
  • 01-Spark环境部署
  • HOT86-单词拆分
  • 开源数据集分类汇总(医学,卫星,分割,分类,人脸,农业,姿势等)
  • Linux:Firewalld防火墙
  • mysql死锁;锁表排查
  • YAMLException: java.nio.charset.MalformedInputException: Input length = 1
  • 无需求文档,保障测试质量的可行性做法
  • SpringBoot项目学习笔记
  • 如何在Vue表单处理中实现表单字段的文件下载
  • SSL证书DV和OV的区别?
  • 计算机竞赛 GRU的 电影评论情感分析 - python 深度学习 情感分类
  • 论文阅读 - Neutral bots probe political bias on social media
  • Fabric系列 - 知识点整理
  • 多目标优化算法之樽海鞘算法(MSSA)
  • 阿里云轻量应用服务器使用教程_创建配置_远程连接_网站上线
  • 自监督学习的概念