请说一下单例模式的概念及应用场景

请说一下单例模式的概念及应用场景

单例模式(Singleton),是一种常用的软件设计模式,单例对象的类必须保证只有一个实例存在。

  • 网站的计数器,一般采用单例模式,否则难以实现同步;

  • 多线程的线程池设计一般也是单例模式,方便对池中的线程进行控制;

  • 操作系统的文件系统,因为一个操作系统只能有一个文件系统;

  • web 应用的配置对象的读取,一般也是单例模式,这是由于配置文件是共享的资源;

  • Windows 的 Task Manager(任务管理器)就是很典型的单例模式;

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

请用 python 代码写一个单例模式,并简述单例模式的应用场景

python 复制代码
class Singleton(object): 
	def__new__(cls):# 为对象分配内存空间
		if not hasattr(cls,'instance'): # instance 做一个标记,如果instance 存在,那么就证明已经生成过对象cls.instance=super(Singleton,cls).__new__(cls) # 分配内存地址
			return cls.instance

应用场景:
1. 任务管理器
2. 回收站
3. 日志应用
4. 网站的计数器
5. Web 应用的配置对象
6. 数据库连接池

用Python代码实现单例模式

python 复制代码
def singleton(cls):
	_instance = {}
	def inner():
		if cls not in _instance:
				_instance[cls] = cls()
		return _instance[cls]
	return inner
	
@singleton
class Cls(object):
	def __init__(self):
		pass

用JAVA代码实现单例模式

java 复制代码
public class SingletonTest {
	// 1、构造方法私有化
	private SingletonTest() {}
	// 2、创建私有静态内部类
	private static class SingletonHolder {
	// 3、创建静态私有 final 类型的实例对象
	private static final SingletonTest singleton2 = new
	SingletonTest();
	 }
	// 4、创建公有静态获取实例的方法
	public static SingletonTest getInstance() {
	return SingletonHolder.singleton2;
	 }
}
相关推荐
曾经的三心草14 小时前
JavaEE初阶-网络原理1
java·网络·java-ee
国科安芯14 小时前
MCU芯片AS32A601与INA226芯片精确测量实现与应用
网络·单片机·嵌入式硬件·架构·安全性测试
Q264336502314 小时前
【有源码】spark与hadoop-情感挖掘+画像建模的携程酒店评价数据分析可视化系统-基于机器学习的携程酒店评价情感分析与竞争态势可视化
大数据·hadoop·python·机器学习·数据分析·spark·毕业设计
一 乐15 小时前
健身达人小程序|基于java+vue健身达人小程序的系统设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·小程序
倚肆15 小时前
Spring Boot 中的 Bean 与自动装配详解
spring boot·后端·python
不剪发的Tony老师15 小时前
PyScripter:一款免费开源、功能强大的Python开发工具
ide·python
u***420716 小时前
Ubuntu介绍、与centos的区别、基于VMware安装Ubuntu Server 22.04、配置远程连接、安装jdk+Tomcat
java·ubuntu·centos
charlie11451419117 小时前
从 0 开始:在 WSL + VSCode 上利用 Maven 构建 Java Spring Boot 工程
java·笔记·vscode·后端·学习·maven·springboot
tuokuac17 小时前
Maven中的属性占位符的用法
java·maven