type
status
date
slug
summary
tags
category
icon
password
概念定义
中文名称:单例模式/单态模式/单件模式
英文名称:singleton pattern
出处 | 定义 |
中国大百科全书 | 一种保证一个类只有一个实例,并提供一个全局性的访问点的设计模式。又称单态模式、单件模式 |
设计模式 | 单例模式是一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。 |
百度百科 | |
维基百科 | In software engineering, the singleton pattern is a software design pattern that restricts the instantiation of a class to a singular instance.
【在软件工程中,单例模式是一种将类的实例化限制为单个实例的软件设计模式。】 |
复述展开
What is Singleton?
概念延申:单例(singleton )在不同领域的概念?
在科学技术领域下:
- 数学领域
- 一个只有一个元素的集合
- 计算机领域
- 单例模式(singleton pattern),一种设计模式
- 单例绑定(singleton bound),用于编码理论
- 单例变量(singleton variable),仅引用一次的变量
- 社会科学领域
- singleton,一个假设的世界秩序,只有一个决策机构
- singleton,一个在语言学中不是双子的辅音
- singleton,指非双胞胎或其他多胞胎的人,也就是单胎人士
singleton,用人话说就是,作为名词时,在某个特定领域,只有一类的事物,可以是政府机构、辅音、人;作为形容词时,表示某样事物在某种特定领域下,有且只有一个,具有全局或者当前的唯一性。
What is Singleton Pattern
单例模式是一种创建型的设计模式,通过使用单例模式,可以保证一个类在某个场景下,有且只有一个实例存在,作为全局唯一的节点。
Why is Singleton Pattern
为什么要设计?
- 最常见的原因是控制某些共享资源 (例如数据库或文件) 的访问权限。
- 保证用户访问都是同一个资源。
单例模式架构
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fdea38628-64dc-40fd-8d17-2efa87e3d554%2F5b4edbb1-8ed2-48b9-9fe2-73c31b717689%2FUntitled.png?table=block&id=17a09ed3-f236-450f-acbe-7d819f0b04c1&t=17a09ed3-f236-450f-acbe-7d819f0b04c1&width=430&cache=v2)
所有单例的实现都包含以下两个相同的步骤:
- 将默认构造函数设为私有, 防止其他对象使用单例类的
new
运算符。
- 新建一个静态构建方法作为构造函数。 该函数会 “偷偷” 调用私有构造函数来创建对象, 并将其保存在一个静态成员变量中。 此后所有对于该函数的调用都将返回这一缓存对象。
如果你的代码能够访问单例类, 那它就能调用单例类的静态方法。 无论何时调用该方法, 它总是会返回相同的对象。
代码实现
单线程单例模式
多线程单例模式
线程安全的单例模式
懒汉模式
饥汉模式
理解体会
单例模式使用在各种语言中都非常常见,像Java中的logging,thread pool。
虽然单例模式很常见,但是它实际上被很多开发者认为是反模式,因为违反了单一职责原理。所以现在,在一些语言中,也在慢慢减少使用单例模式。
在具体使用上,如何需要对共享变量(数据库、文件管理)进行使用,可以使用单例模式,全局共享同一个。
快速跳转链接
【概念解析】启动
【概念解析】Day 1 - 10
【概念解析】Day 11 - 20
【概念解析】Day 21 - 30
【概念解析】Day 31 - 40
【概念解析】Day 41 - 50
【概念解析】Day 51 - 60
【概念解析】Day 61 - 70
【概念解析】Day 71 - 80
【概念解析】Day 81 - 90
- 作者:eachenkuang
- 链接:https://kuangyichen.com/article/industry-day31
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。