static应用之 单例设计模式(饿汉单例&懒汉单例)

简介: 本章我们来学习单例模式中的饿汉单例和懒汉单例,那么什么是单例模式呢?应用该模式的这个类永远只有一个实列,即一个类只能创建一个对象例如电脑上的任务管理器对象只需要一个就能解决问题,可以节省内存空间先定义一个类,把构造器私有如下图,先来看一下没有把构造器私有化的SingleInstance类,此时Test类中可以随意创建多个SingleInstance的实例化。 在SingleInstance类中用private修饰无参构造器,此时左边new方法报错了。我们在右边创建一个静态变量来存储对象,变量名为instan

目录

前言

1、饿汉单例设计模式

步骤

2、懒汉单例设计模式

步骤

总结


前言

本章我们来学习单例模式中的饿汉单例懒汉单例,那么什么是单例模式呢?

应用该模式的这个类永远只有一个实列,即一个类只能创建一个对象

例如电脑上的任务管理器对象只需要一个就能解决问题,可以节省内存空间


1、饿汉单例设计模式

步骤

先定义一个类,把构造器私有

如下图,先来看一下没有把构造器私有化的SingleInstance类,此时Test类中可以随意创建多个SingleInstance的实例化。

image.gif

在SingleInstance类中用private修饰无参构造器,此时左边new方法报错了。

image.gif

我们在右边创建一个静态变量来存储对象,变量名为instance,变量类型为SingleInstance,往里面放入new SingleInstance();也就是SingleInstance对象的实例化。等于是Test1获取对象前,我们提前给它创建一个,并且定义为static,所以在左边main方法中无论提取多少次instance,输出的地址值都是一样的,也就是s1、s2、s3指向的都是同一个对象,这就是饿汉单例

image.gif

2、懒汉单例设计模式

步骤

和前面的饿汉单例不同的是,饿汉是提前创建好一个对象,而懒汉是在需要的时候再去创建

相同的是都要将构造器私有化(因为都是单例模式)和 定义一个静态变量来存储

image.gif

如下图,要注意的是在懒汉单例模式中我们创建一个静态变量时先不往里面放入对象,而是通过get Instance往里面放入对象,因此最好将它私有化,避免main方法中获取对象时输入提示instance2

image.gif

再来输出一下,可以看见地址值还是一样,懒汉单例模式完成

image.gif


总结

单例模式对外只能产生一个对象,饿汉模式是提前创建好这个对象,而懒汉模式是你用的时候我再给你创建,那么饿汉和懒汉更好呢,从内存角度懒汉用的时候才创建,更节省内存;从速度的角度,饿汉提前创建好了,获取对象的时候速度会更快。

目录
相关文章
|
2月前
|
设计模式 安全 测试技术
【C/C++ 设计模式 单例】单例模式的选择策略:何时使用,何时避免
【C/C++ 设计模式 单例】单例模式的选择策略:何时使用,何时避免
62 0
|
2月前
|
设计模式 编解码 C++
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用(一)
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用
50 0
|
2月前
|
设计模式 安全 Java
在Java中即指单例设计模式
在Java中即指单例设计模式
21 0
|
2月前
|
设计模式 存储 缓存
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用(二)
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用
27 0
|
4天前
|
设计模式 安全 Java
【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
|
3天前
|
设计模式 消息中间件 Java
Java 设计模式:探索发布-订阅模式的原理与应用
【4月更文挑战第27天】发布-订阅模式是一种消息传递范式,被广泛用于构建松散耦合的系统。在 Java 中,这种模式允许多个对象监听和响应感兴趣的事件。
20 2
|
3天前
|
设计模式 算法 Java
Java 设计模式:探索策略模式的概念和实战应用
【4月更文挑战第27天】策略模式是一种行为设计模式,它允许在运行时选择算法的行为。在 Java 中,策略模式通过定义一系列的算法,并将每一个算法封装起来,并使它们可以互换,这样算法的变化不会影响到使用算法的客户。
10 1
|
13天前
|
设计模式 算法 Java
Java中的设计模式及其应用
【4月更文挑战第18天】本文介绍了Java设计模式的重要性及分类,包括创建型、结构型和行为型模式。创建型模式如单例、工厂方法用于对象创建;结构型模式如适配器、组合关注对象组合;行为型模式如策略、观察者关注对象交互。文中还举例说明了单例模式在配置管理器中的应用,工厂方法在图形编辑器中的使用,以及策略模式在电商折扣计算中的实践。设计模式能提升代码可读性、可维护性和可扩展性,是Java开发者的必备知识。
|
2月前
|
设计模式 算法 中间件
【C++ 可调用对象的应用】C++设计模式与现代编程技巧:深入可调用对象的世界
【C++ 可调用对象的应用】C++设计模式与现代编程技巧:深入可调用对象的世界
122 1
|
2月前
|
设计模式 编解码 算法
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用(三)
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用
29 0