【设计模式】单例、工厂、策略、责任链模式

news2024/9/22 15:50:41

1.单例模式

单例模式确保某个类只有一个实例,主要使用有两种:懒汉式单例、饿汉式单例

单例模式有以下特点:
  1、单例类只能有一个实例。
  2、单例类必须自己创建自己的唯一实例。
  3、单例类必须给所有其他对象提供这一实例。

使用场景:

  • 数据库连接池:单例模式可以确保在某个时刻只有一个数据库连接池实例存在,避免出现重复连接的问题。
  • 线程池:Java 线程池是一个非常重要的 API,创建多个线程池实例可能导致内存使用过高,以将其设置为单例模式更加合适。

1.1懒汉式单例

代码示例:

//懒汉式单例类.在第一次调用的时候实例化自己

public class Singleton {

    private Singleton() {}

    private static Singleton single=null;

    //静态工厂方法

    public static Singleton getInstance() {

         if (single == null) { 

             single = new Singleton();

         

        return single;

    }

}

public class Singleton {  

    private static class LazyHolder {  

       private static final Singleton INSTANCE = new Singleton();  

    }  

    private Singleton (){}  

    public static final Singleton getInstance() {  

       return LazyHolder.INSTANCE;  

    }  

}    

1.2饿汉式单例

代码示例:

//饿汉式单例类.在类初始化时,已经自行实例化

public class Singleton1 {

    private Singleton1() {}

    private static final Singleton1 single = new Singleton1();

    //静态工厂方法

<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2105924.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 算法交易实验87 QTV200日常推进-沪深300的交易量统计

说明 上一篇 讲到&#xff0c;就全市场的交易量来看&#xff0c;近3年也看不出很奇怪的地方&#xff1b;因此&#xff0c;交易量[支持度]不足而导致的策略失灵似乎也说不通。 为了进一步确认&#xff0c;我打算&#xff1a; 1 获取沪深300成分股&#xff0c;只统计成分股的交…

RDD、DataFrame、DataSet(Spark)

RDD、DataFrame、DataSet RDD (弹性分布式数据集)&#xff1a; 版本: Spark的初始版本&#xff0c;1.0开始提供。特性: RDD是Spark的基础数据结构&#xff0c;表示一个不可变的分布式对象集合。可以通过转换操作&#xff08;如map、filter、flatMap&#xff09;和行动操作&…

outlook设置规则后,规则无法自动运行的解决方案

outlook设置规则后&#xff0c;规则无法自动运行的解决方案 问题描述解决方案说明 问题描述 在outlook设置规则对邮件进行文件夹移动时&#xff0c;有时会出现规则无法自动运行的情况。出现这种情况有很多原因和解决方案&#xff0c;本文列出其中一种。 解决方案 outlook版本…

吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)1.9-1.10

目录 第四门课 卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;第一周 卷积神经网络&#xff08;Foundations of Convolutional Neural Networks&#xff09;1.9 池化层&#xff08;Pooling layers&#xff09;1.10 卷 积 神 经 网 络 示 例 &#xff08; …

JDBC的介绍

一 JDBC的简介 1.1 ODBC的出现 早期的数据库应用程序开发&#xff0c;因为没有通用的针对与数据库的编程接口&#xff0c;所以&#xff0c;开发人员需要学习相关数据库的API&#xff0c;才可以进行应用程序&#xff0c;这样增加了学习成本和开发周期。因此整个开发市场一直在呼…

QT creator堆栈窗体demo

创建项目选择QDialog,不要选QMainWindow #ifndef DIALOGSTACK_H #define DIALOGSTACK_H#include <QDialog> #include <QListWidget>//列表框 #include <QStackedWidget>//堆栈窗体 #include <QLabel>QT_BEGIN_NAMESPACE namespace Ui { class DialogSt…

集成电路学习:什么是NOR Flash Memory非易失性闪存存储器

一、NOR Flash Memory&#xff1a;非易失性闪存存储器 NOR Flash Memory&#xff0c;即非易失性闪存存储器的一种&#xff0c;是Flash存储器的一个重要分支。Flash存储器&#xff0c;又称为闪存&#xff0c;结合了ROM&#xff08;只读存储器&#xff09;和RAM&#xff08;随机存…

力扣面试150 分隔链表 模拟

Problem: 86. 分隔链表 &#x1f468;‍&#x1f3eb; 参考题解 Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNo…

SQL - SQL优化

在sql查询中为了提高查询效率&#xff0c;我们常常会采取一些措施对查询语句进行sql优化&#xff0c;下面总结的一些方法&#xff0c;有需要的可以参考参考 一、查询SQL尽量不要使用select *&#xff0c;而是具体字段 // 建议 SELECT id,user_name,age,tel FROM user// 不建议…

UEFI BIOS之SMBIOS

SMBIO spec: SMBIOS Specification (dmtf.org) https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.5.0.pdf SMBIOS SMBIOS&#xff08;System Management BIOS&#xff09;是一种标准化的系统信息数据结构&#xff0c;旨在提供有关计算机硬件配置、…

Java SPI机制源码

文章目录 SPI简介使用案例SPI的应用SPI机制源码SPI与类加载器双亲委派机制 SPI简介 Java的SPI&#xff08;Service Provider Interface&#xff09;机制允许第三方为应用程序提供插件式的扩展&#xff0c;而不需要修改应用程序本身的代码&#xff0c;从而实现了解耦。Java标准库…

HUAWEI华为MateBook B5-420 i5 集显(KLCZ-WXX9,KLCZ-WDH9)原装出厂Windows10系统文件下载

适用型号&#xff1a;KLCZ-WXX9、KLCZ-WDH9 链接&#xff1a;https://pan.baidu.com/s/12xnaLtcPjZoyfCcJUHynVQ?pwdelul 提取码&#xff1a;elul 华为原装系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、华为浏览器、Office办公软件、华为…

[数据集][目标检测]石油泄漏检测数据集VOC+YOLO格式6633张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;6633 标注数量(xml文件个数)&#xff1a;6633 标注数量(txt文件个数)&#xff1a;6633 标注…

网络安全硬件

传统防火墙 传统防火墙 技术&#xff1a;访问控制、代理技术、会话机制 工作层次&#xff1a;应用层一下 防御模式&#xff1a;通过防御设备划分边界&#xff0c;基于IP/端口和特征进行判断&#xff1b;以隔离为基础&#xff0c;基于信任原则构建安全框架&#xff1b;以防护为…

【Rust】007-包管理与模块管理

【Rust】007-包管理与模块管理 文章目录 【Rust】007-包管理与模块管理一、包管理器&#xff1a;Cargo1、简介Cargo 官方文档仓库 2、项目初始化3、写一个小程序任务目标寻找合适的库添加库到我们的项目中代码实现cargo run运行 二、模块管理1、概述2、文件作为模块第一步&…

可靠性定义

一、广义可靠性 包含以下三个方面 1、可靠性&#xff08;Reliability&#xff09; 定义&#xff1a;产品、系统或组件在预定条件下和规定时间内&#xff0c;完成既定功能的能力。 平均故障间隔时间&#xff08;Mean Time Between Failures, MTBF&#xff09;&#xff1a; …

每天五分钟深度学习:广播机制(以python语言为例)

本文重点 因为向量化的计算方式导致效率的提升,所以现在很多时候,我们都是用向量化的计算,但是向量化计算有一个问题让人头痛就是维度的问题,本节课程我们将讲解python中的广播机制,你会发现这个机制的优秀之处。 代码实例 import numpy as np a=np.random.randn(3,4) …

使用 Milvus 和 Streamlit 搭建多模态产品推荐系统

我们可以使用 Milvus 搭建多模态 RAG 应用&#xff0c;用于产品推荐系统。用户只需简单上传一张图片并输入文字描述&#xff0c;Google 的 MagicLens 多模态 Embedding 模型就会将图像和文本编码成一个多模态向量。然后&#xff0c;使用这个向量从 Milvus 向量数据库中找到最相…

负载均衡 Ribbon 与 Fegin 远程调用原理

文章目录 一、什么是负载均衡二、Ribbon 负载均衡2.1 Ribbon 使用2.2 Ribbon 实现原理 (★)2.3 Ribbon 负载均衡算法 三、Feign 远程调用3.1 Feign 简述3.2 Feign 的集成3.3 Feign 实现原理 (★) 一、什么是负载均衡 《服务治理&#xff1a;Nacos 注册中心》 末尾提到了负载均…

简单的Linux Ftp服务搭建

简单的Linux FTP服务搭建 1.需求 公司有一个esb文件传输代理&#xff0c;其中我们程序有文件传输功能&#xff0c;需要将本地文件传输到esb文件代理服务器上&#xff0c;传输成功之后发送http请求&#xff0c;告知esb将固定文件进行传输到对应外围其他服务的文件目录中&#…