创建型设计模式之Singleton(单例)设计模式

创建型设计模式之Singleton(单例)设计模式

摘要:
Singleton(单例)设计模式确保一个类仅有一个实例,并提供全局访问点。其结构包含一个静态方法getInstance()用于获取唯一实例,构造方法私有化防止外部实例化。适用于需要控制实例数量(如配置管理、线程池等)或需通过子类扩展但客户端无需修改代码的场景。示例代码展示了通过静态变量实现线程安全的单例模式,多次调用getInstance()返回同一实例,验证了唯一性。

1)意图:

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

2)结构
在这里插入图片描述
其中:Singleton指定一个Instance操作,允许客户访问它的唯一实例,Instance是一个类

操作:可能负责创建它自己的唯一实例。

3)适用性

Singleton 模式适用于:

  • 当类只能有一个实例并且客户可以从一个众所周知的访问点访问它时。
  • 当这个唯一实例应该是通过子类可扩展的,并且客户无法更改代码就能使用一个扩展的实例时。

代码

public class SingletonPattern {public static void main(String[] args) {Singleton instance1 = Singleton.getInstance();Singleton instance2 = Singleton.getInstance();Singleton instance3 = Singleton.getInstance();Singleton instance4 = Singleton.getInstance();System.out.println("instance1 = " + instance1);System.out.println("instance2 = " + instance2);System.out.println("instance3 = " + instance3);System.out.println("instance4 = " + instance4);}
}class Singleton{private static final Singleton instance = new Singleton();private Singleton(){}public static Singleton getInstance(){return instance;}
}

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

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

相关文章

C++11:系统类型增强

C11:系统类型增强 强枚举类型作用域限定隐式类型转换指定类型前置声明 类型别名 using模板别名复杂指针别名 auto限制性 auto注意事项 nullptrdecltype 强枚举类型 在C98的枚举设计中,存在很多缺陷,为此C11推出了强枚举来代替旧版的枚举&…

linux 内核warn_on/Bug_on

1,warn_on() warn_on() 是 Linux 内核中用于报告潜在问题或警告的宏。与 bug_on() 不同,bug_on() 通常用于报告严重错误,其触发往往会导致内核Oops或panic,而 warn_on() 则用于报告不太严重的、可能只是潜在问题或预期外情况的情况。它的触…

SQL输出20个9

在SQL Server中要输出20个连续的9,可以使用以下几种方法: 使用REPLICATE函数重复生成字符: SELECT REPLICATE(9, 20) AS Result 2. 使用UNION ALL联合查询生成多行: SELECT 9 AS Number FROM (VALUES (1),(1),(1),(1),(1),(1),…

懒人云电脑方案:飞牛NAS远程唤醒 + 节点小宝一键唤醒、远程控制Windows!

后台高频问题解答: “博主,飞牛NAS能定时开关机了,能不能让它顺便把家里Windows电脑也远程唤醒控制?最好点一下就能连,不用记IP端口那种!” 安排!今天这套方案完美实现: ✅ 飞牛NAS…

Linux特殊符号

1 管道符| 管道符号 | 用于将一个命令的输出作为另一个命令的输入。这种机制允许将多个命令组合在一起,形成一个数据处理链,每个命令处理前一个命令的输出,从而实现复杂的数据处理任务。示例 # 查询/var/log目录下所有的log文件,并进行分页…

初识Docker:容器化技术的入门指南

初识Docker:容器化技术的入门指南 一、Docker是什么:容器化技术的核心概念二、Docker的核心优势2.1 环境一致性2.2 高效部署与快速迭代2.3 资源利用率高 三、Docker的安装与基本使用3.1 安装Docker3.2 Docker基本概念3.3 第一个Docker容器体验 四、Docke…

商务风企业公司推广培训计划PPT模版分享

商务风企业公司推广培训计划PPT模版分享:商务培训推广计划PPT模版https://pan.quark.cn/s/063282eaf739 第1套PPT模版,绿橙配色,几何图形拼接背景,有中英文标题和占位文本。 第2套PPT模版是黑金高端商务风格,有汇报人…

深入理解Nginx:详尽配置手册

Nginx是一款高性能的HTTP和反向代理服务器,广泛应用于负载均衡、缓存和Web服务器等场景。随着互联网应用的快速发展,掌握Nginx的配置和优化技巧显得尤为重要。在本篇文章中,我们将深入探讨Nginx的配置,帮助你更好地理解和使用这款…

每日leetcode

1572. 矩阵对角线元素的和 - 力扣(LeetCode) 题目 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1: 输入:mat [[1,2,3], …

Server 9 ,在 VMware 虚拟机上安装 Windows 系统完整指南

目录 前言 一、准备工作 1.1 准备安装文件 1.2 安装VMware软件 1.3 创建新的虚拟机 1.4 开启虚拟机 二、注意事项 2.1 调整硬件设置 2.2 启动顺序配置 2.3 固件类型选择 2.4 安全启动配置 三、安装优化 3.1 安装VMware Tools 3.2 系统更新与激活 四、更多操作 ​…

最终章:终焉之塔 · 前端之道

第一章:HTML基石现实的骨架 第二章:CSS秘典 色彩与布局的力量 第三章:JavaScript引擎 行为之火 第四章:DOM迷宫 掌控页面之心 第五章:异步幻境 时间与数据的秘密 第六章:事件风暴 用户的意志 第七章&a…

详解 .net9 内置 Lock 对象,更加现代化和灵活可控的锁对象

.NET 9 引入了全新的 System.Threading.Lock 类型,作为更现代、类型安全且具备递归支持的同步原语。与传统的基于 Monitor.Enter/lock(obj) 的方式不同,Lock 是一个具体的类,提供了更灵活的 API 和结构化编程模型。 Lock 类 Lock 是一个具体…

python几行命令实现快速打包apk

1. ​​环境准备​ sudo apt update sudo apt install -y python3-pip git zip unzip openjdk-17-jdk sudo apt-get install -y autoconf automake libtool pip install kivy buildozer cython2. ​​项目配置​ 在项目目录中初始化Buildozer: buildozer init这会…

实时数仓和离线数仓的区别是什么?企业如何选择合适的数仓架构?

实时数仓和离线数仓的区别是什么?企业如何选择合适的数仓架构? 时数仓和离线数仓都是数据仓库的不同类型,用于存储和管理企业的数据,但它们在数据处理和使用的时间、速度以及用途方面有明显的区别。 在介绍实时数仓之前&#xf…

Docker Desktop for Windows 系统设置说明文档

1. 文档概述 本文档旨在详细说明 Docker Desktop for Windows 应用程序中“设置 (Settings)”界面下的所有可配置选项及其子选项。对于每个配置项,我们将提供其功能描述、推荐配置(如适用)以及相关注意事项,帮助用户更好地理解和…

精准监测,健康无忧--XC3576H工控主板赋能亚健康检测仪

在快节奏的现代生活中,亚健康问题逐渐成为困扰人们健康的隐形杀手。疲劳、失眠、免疫力下降等问题频发,却往往因难以察觉而延误调理。智能亚健康检测仪通过高科技手段,帮助用户实时了解身体状况,提前预警潜在健康风险。 其核心功能…

SBT开源构建工具

SBT 的多元定义与核心解释 SBT(Simple Build Tool)是专为 Scala 和 Java 项目设计的开源构建工具,基于 Scala 语言开发,提供依赖管理、编译、测试、打包等全流程支持。其核心特点包括: 核心功能与特性: …

npm run build后将打包文件夹生成zip压缩包

安装依赖 npm install archiver --save-dev准备compress.js文件 const fs require(fs); const archiver require(archiver);const sourceDir ./dist; //替换为你的文件夹路径 const outputZip ./dist.zip;console.log(开始压缩); const output fs.createWriteStream(ou…

力扣 215 .数组中的第K个最大元素

文章目录 题目介绍题解 题目介绍 题解 法一:基于快速排序的选择方法 以中间元素pivot为基准进行排序后,右指针 r 的位置就是最终全部排序好后pivot的位置,然后去左边或右边递归寻找第k个位置(答案)的元素。 代码如下…

CentOS 7.0重置root密码

文章目录 版本:CentOS 7.0内核版本:CentOS Linux, with Linux 3.10.0-123.el7.x86_64 服务器重启后,等待进入上述页面,按⬆⬇键,中断正常启动。在此页面按E,进入编辑模式 继续按⬇,找到linux16…