单例模式之通俗易懂

关于23种设计模式的有趣见解(通俗易懂) 1、FACTORY —追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。 立即下载

1、是什么

整个程序有且仅有一个实例。该类负责创建自己的对象,同时确保只有一个对象被创建
类构造器私有
持有自己类型的属性
对外提供获取实例的静态方法

2、干嘛用

  1. Windows的Task Manager(任务管理器)就是很典型的单例模式(这个很熟悉吧),想想看,是不是呢,你能打开两个windows task manager吗? 不信你自己试试看哦~

  2. windows的Recycle Bin(回收站)也是典型的单例应用。在整个系统运行过程中,回收站一直维护着仅有的一个实例。

  3. 网站的计数器,一般也是采用单例模式实现,否则难以同步。

  4. 应用程序的日志应用,一般都何用单例模式实现,这一般是由于共享的日志文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加。

  5. Web应用的配置对象的读取,一般也应用单例模式,这个是由于配置文件是共享的资源。

  6. 数据库连接池的设计一般也是采用单例模式,因为数据库连接是一种数据库资源。数据库软件系统中使用数据库连接池,主要是节省打开或者关闭数据库连接所引起的效率损耗,这种效率上的损耗还是非常昂贵的,因为何用单例模式来维护,就可以大大降低这种损耗。

  7. 多线程的线程池的设计一般也是采用单例模式,这是由于线程池要方便对池中的线程进行控制。

  8. 操作系统的文件系统,也是大的单例模式实现的具体例子,一个操作系统只能有一个文件系统。

  9. HttpApplication 也是单位例的典型应用。熟悉ASP.Net(IIS)的整个请求生命周期的人应该知道HttpApplication也是单例模式,所有的HttpModule都共享一个HttpApplication实例.

3、怎么用

懒汉模式

public class Singleton {  
    private static Singleton instance;  
    private Singleton (){}  
  
    public static Singleton getInstance() {  
    if (instance == null) {  
        instance = new Singleton();  
    }  
    return instance;  
    }  
}

饿汉模式

public class Singleton {  
    private static Singleton instance = new Singleton();  
    private Singleton (){}  
    public static Singleton getInstance() {  
    return instance;  
    }  
}

双重锁模式

public class Singleton {  
    private volatile static Singleton singleton;  
    private Singleton (){}  
    public static Singleton getSingleton() {  
    if (singleton == null) {  
        synchronized (Singleton.class) {  
        if (singleton == null) {  
            singleton = new Singleton();  
        }  
        }  
    }  
    return singleton;  
    }  
}

静态内部类单例模式

public class Singleton { 
    private Singleton(){
    }
      public static Singleton getInstance(){  
        return Inner.instance;  
    }  
    private static class Inner {  
        private static final Singleton instance = new Singleton();  
    }  
} 

枚举单例模式

public enum Singleton {
    INSTANCE;
}
public enum Singleton  {
    INSTANCE 
 
    //doSomething 该实例支持的行为
      
    //可以省略此方法,通过Singleton.INSTANCE进行操作
    public static Singleton get Instance() {
        return Singleton.INSTANCE;
    }
}
从零到一:TI AWR1843 Boost EVM与DCA1000 EVM的ADC数据采集实战指南 本文详细介绍了TI AWR1843 Boost EVM与DCA1000 EVM的ADC数据采集实战指南,涵盖硬件连接、软件配置、固件烧录、雷达参数设置及数据处理等关键步骤。通过MATLAB等工具,开发者可高效实现毫米波雷达数据采集,适用于自动驾驶、工业检测等领域。 阅读详情

相关推荐

微信好友恢复全攻略(2025年3月更新)

适用于仅被拉黑场景(成功率100%)针对7天内误删场景(成功率78%)

2301_77933942的博客 1万+

设计模式之单例模式(通俗易懂,超详细)

1 什么是单例模式 单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,如:仅线程上下文内使用同一个实例) ——《百度百科》 简单来说单例模式就是指在内存中只会创建且仅创建一次对象的设计模式,当程序中其他地方需要使用到该对象的相同功能时,都会调用创建好的这一个,不会再额外创建实例,这样做的好处就是避免过多的创建相同作用的对象使得内存浪费。 2 单例模式分类 在单例模式中主要分为两类,分别是懒汉式和饿汉式 懒汉式:在程

CodeJR 2694

全能扫描王的实现(python版本)- 目标检测图像矫正

全能扫描王python代码实现,可用于文件扫描或者是图像校正

搬砖猛女的啃书历程 5488

小白理解的单例模式(通俗易懂)

1、单例模式:是一种常用的软件设计模式,属于创建型模式的一种。在应用这个模式时,单例对象的类必须保证只有一个实例存在。 2、实现单例模式的思路是:一个类能返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,通常使用getInstance这个名称);当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用;...

weixin_40264260的博客 613

玩转肺癌目标检测数据集Lung-PET-CT-Dx ——①从TCIA获取影像数据集

该目标检测公共数据集源自 The Cancer Imaging Archive(TCIA),是肿瘤研究方面的著名的医学影像公开数据库。 数据以 DICOM 格式存储,由肺癌受试者的 CT 和 PET-CT DICOM 图像组成。

takedachia的博客 1万+

mipi协议中的calibration和scramble模式

在MIPI(Mobile Industry Processor Interface)协议中,calibration(校准)和scramble(加扰)模式是两个重要的特性,它们分别用于优化数据传输的准确性和减少信号干扰。

flomingo1的专栏 2397

这是我见过最通俗易懂的单例模式讲解了!

作者:路易小七cnblogs.com/lewis0077/p/5128971.html单例模式在程序设计中非常的常见,一般来说,某些类,我们希望在程序运行期间有且只有一个实例,原因可能是...

Java知音 787

七、永磁同步电机矢量控制(FOC)—MTPA控制及Simulink仿真

前面几节的内容已经完成Id=0控制策略的理论和仿真以及双闭环PI参数整定。在接下来几节中,将陆续讲解MTPA、弱磁控制等内容。

weixin_45182459的博客 8189

最通俗易懂的单例模式讲解-设计模式

文章目录单例模式概述解决问题实现真实世界类比UML代码基础单例单线程应用场景优缺点分析 单例模式 2020.11.26 概述 单例模式是一种创建型设计模式,让你能够保证一个类只有一个实例,并提供一个访问该实例的全局节点。 解决问题 保证一个类只有一个实例 为什么要控制一个类所拥有的实例数量? 最常见的原因是控制某些共享资源的访问权限。 如果你已经创建了一个对象, 过一会你决定又创建一个对象,此时你会获得之前已创建的对象。 为该实例提供一个全局访问节点 想想平时用来存储重要对象的全局变量,使用上非常方

讨论与分享 424

【CanMV K210】AI 视觉 MNIST 手写数字识别与分类推理

本文介绍了基于CanMV K210开发板的MNIST手写数字识别实验。实验通过摄像头采集图像,经过开窗、灰度化、缩放、反色等预处理后,使用KPU神经网络加速器运行MNIST分类模型,最终在LCD上显示识别结果。重点讲解了分类模型与检测模型的区别、图像预处理流程以及KPU推理结果的解析方法。实验帮助理解从图像采集到分类输出的完整AI视觉处理链路,并提供了调试思路和硬件连接说明。

Mr数据杨 364

快速生成2D卡通人物的AI工具:开启Live2D角色创作的新时代

随着这一创新工具的推出,我们正见证着Live2D角色创作进入了一个全新的阶段。它不仅极大地简化了角色设计的过程,也为广大创作者提供了一种全新的表达方式。对于那些渴望将脑海中的构思迅速转化为现实的人来说,这无疑是一大福音。现在就访问项目主页,开始探索无限可能吧!t=O83A项目主页https://human3daigc.github.io/Textoon_webpage/

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 4831

单例模式(Singleton Pattern) -(最通俗易懂的案例)

文章目录单例设计模式介绍单例模式的几种实现方式1.饿汉式(静态常量)2.懒汉式(线程不安全)3.懒汉式(线程安全)4.双重检查单例模式注意事项和细节说明 单例设计模式介绍 所谓类的单例设计模式,就是采用一定的方法保证在整个的软件系统中,对某个类只能存在唯一的实例,并且该类只提供一个取得其对象实例的方法(静态方法)。 比如Hibernate的SessionFactory,它充当数据存储源的代理,并负...

世银的博客 1388

【异常】Openclaw Gateway进程异常停止问题分析与解决方案

本文分析了Gateway服务异常停止的问题,提出了三种解决方案。核心问题是缺乏进程守护和自动恢复机制,导致服务崩溃后无法自行重启。推荐方案是使用PM2进程管理工具(方案1),提供进程监控、自动重启和开机自启功能。替代方案包括自定义守护脚本(方案2)和supervisord管理(方案3)。这些方案都能有效解决当前服务脆弱性问题,显著提升服务可用性,其中PM2方案成熟度高、配置简单,是首选解决方案。实施后可将服务从人工干预转变为自动恢复,确保业务连续性。

奶爸的编程之路,也就一周冷个三天 455

通俗易懂的单例模式

单例模式自我心得 1、创建单例模式的几种方法 饿汉模式:也是思维上最常见的方式,我创建好了一个单例,无论何时来调用,都是可以的,反正我已经在这里了,无论你用或者不用,我都已经创建好了。

weixin_45967266的博客 204

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

单例模式 -通俗易懂的讲解

什么是单例模式: 保证一个类有且仅有一个实例,并提供它的全局访问点。 单例模式有什么用: 其实单例的作用在于避免产生太多实例,也就是不用new那么多次,new一次就占用一次内存的资源,new多了电脑也会慢的。 具体举个例子吧。 在取款的时候,绝对不允许有多个对象,假如多个对象同时操作数据库,将导致线程不安全,有可能出现同时取款,账目只扣一次款。 至于说为什么只扣一次款,了解的看下文,不

九天工作室 1797

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java 通俗易懂单例模式

首先这种方法是防止多线程,如果同步方法频繁调用时不适合此方法 public class Singleton { // 定义一个私有构造方法 private Singleton() {} /* *定义一个静态私有变量   *不初始化,不使用final关键字,使用volatile保证了多线程访问时instance变量的可见性,

wjc_cunzhang的博客 594

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

学妹问单例模式,我用最通俗易懂的讲解让她学会了

昨天听到一个大二的学妹抱怨单例模式太难懂,我用最通俗易懂的讲解让她学会了

4702

单例模式(史上最通俗易懂)

单例模式放到设计模式来说是再好不过的了 阅读指导 本文会从需求、设计、优缺点来阐述 理解思想,重于编码! 单例模式 1.简介    单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,通俗来说是一个类的单个实例。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。    这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 总的来说 单例类只能有一

三少说 1025

通俗易懂的手写单例模式

这个是面试的时候经常会问到的,顺便让你手写一个单例模式 单例模式:一个类只创建一个实例,并且系统都使用这一个实例。 常用的单例模式有两种: 1 饿汉式的 // 饿汉式是 直接就只实例一个对象,你要用,我就返回给你 //但是有个问题,因为是提前写好的,可能会浪费空间,因为你占用了空间,但是可能没有起作用。 public class Hungry { //不使用就浪费 private byte[] data1 =new byte[1024*1024]; private byte[] d

qq_41893646的博客 478

【大话Java面试】-如何通俗易懂的理解单例模式?

【大话Java面试】-如何通俗易懂的理解单例模式? 单例模式定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供。 其实现方式主要是通过饿汉式(线程安全的)和懒汉式(线程不安全的)实现方式。 1.饿汉式的实现方式 package com.lcz.syn; // 单例模式实现方式-饿汉式 class SingleOne{ // 创建类中私有构造 private SingleOne(){ } // 创建私有对象 private static SingleOne i

Mind_programmonkey的博客 395

通俗易懂说设计模式(1)单例模式

通俗易懂说设计模式(1)单例模式1. 定义2. 举例3. 代码 1. 定义 在一个应用程序的生命周期中,保证一个类仅有一个实例,并提供一个访问它的全局访问点。 2. 举例 应用程序的系统日志,多台打印机和打印程序 3. 代码 Class Singleton { private: static Singleton *m_single; //1. 静态私有成员变量 Singleton()...

哈尼的博客 316

用一个通俗易懂的例子彻底说清楚单例模式

文章目录一、背景二、单例模式1、概念2、网站计数的单例实现2.1 饿汉模式2.2 懒汉模式2.3 枚举类实现单例模式三、总结 一、背景 在企业网站后台系统中,一般会将网站统计单元进行独立设计,比如登录人数的统计、IP数量的计数等。在这类需要完成全局统计的过程中,就会用到单例模式,即整个系统只需要拥有一个计数的全局对象。 在网站登录这个高并发场景下,由这个全局对象负责统计当前网站的登录人数、IP等,即节约了网站服务器的资源,又能保证计数的准确性。 二、单例模式 1、概念 单例模式是最常见的设计模式之一,

我的博客 862

【单例模式】java设计模式之——单例模式(通俗易懂!!最强详解)

单例模式是一种常见的设计模式,用于确保某个类只有一个实例,并提供全局访问点以供其他对象使用。在Java中,单例模式的实现方式主要有懒汉式单例、饿汉式单例和登记式单例。是指在首次使用时才创建实例。其特点是延迟加载,即在需要的时候才创建对象。懒汉式单例的写法通常采用双重检查锁定来保证线程安全。是指在类加载时就创建实例。其特点是立即加载,即在类加载时就生成对象。饿汉式单例的写法简单直接,但无法实现延迟加载。是指将所有实例都存放在一个注册表中,通过标识符来获取对应的实例。

miles067的博客 1734

java设计模式之单例模式实现(通俗易懂)

由于我们java开发中,会看到依赖注入,还有自动注入的这些注解方式,对于一些初学者,或者平时不怎么研究spring一些技术的原理的话,可能不太清楚,这里我就简单说下,一般依赖注入,还有自动注入,通常会在启动项目的时候,就已经把所有bean扫描了,并且注册了,另外也会默认使用单例模式创建每个接口的实现类,然后我们调用@autowire注解的时候,就会实现自动注入,所以知道了这些,大家就了解一下原理,拓展一下眼界, 先放出简单的实现代码 package com.vincent.DesignPattern;

VincentGTX_huang的博客 365

JAVA单例模式_通俗易懂详解

1.懒汉模式 私有化属性,类外不可访问,静态属性,类外直接访问,类内直接访问静态成员 class A{ private A(){} private static A a=null; public static A getInsatance(){ if(a==null){ a=new A(); } return a } } 2.恶汉模式 class A{ private A(){} private static A a= new A(); public static A getInstance(){ retu

weixin_49139876的博客 218

通俗易懂设计模式解析——单例模式

一、前言   在上一节中我们对设计模式进行了一定的介绍及分类。设计模式分为创建型、结构型、行为型。创建型模式——主要负责对象的创建。结构型职责——主要负责处理类与对象的组合。行为型模式——主要负责类与对象交互中的职责的分配问题。今天我们也是讲述介绍创建型模式中的第一个模式——单例模式。 二、单例模式介绍   (一)来由     单例模式(Singleton Pattern)是最简...

dingxian9983的博客 248
上一篇: 代理模式之通俗易懂
下一篇: 装饰者模式之通俗易懂
沐果果
博客等级 码龄10年 19粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值