单例模式_Golang

目录

一、单例模式

[1.1 基本概念](#1.1 基本概念)

[1.2 使用场景](#1.2 使用场景)

二、Golang实现

[2.1 懒汉模式(Lazy Loading)](#2.1 懒汉模式(Lazy Loading))


一、单例模式

1.1 基本概念

一个类只能生成一个实例,且该类能自行创建这个实例的一种模式,这个定义个人感觉可以拆的通俗一些,在项目的生命周期内,一个类生成的一个实例对象只能存在一个,调用时复用该单例对象即可,这样既节省了内存空间,也节省了创建新对象时的资源消耗,也便于资源管理.

1.2 使用场景

1.配置文件的读取:‌在应用程序中,‌如果某些配置信息只需要读取一次,‌那么可以将这些配置信息的加载逻辑放在单例类中,‌确保配置信息只被加载一次,‌提高了性能和效率。‌

2. 资源共享场景 ,‌节省开支 :‌系统中只需要存在一个共享的资源,‌如数据库连接池、‌线程池等,‌单例模式可以确保这些对象的创建和管理更加高效。‌

3.日志记录:‌在需要记录应用程序运行日志的场景中,‌单例模式可以确保日志记录器的唯一性,‌避免了多个日志记录器同时记录导致的资源浪费和混乱。‌

二、Golang实现

2.1 懒汉模式(Lazy Loading)

懒汉模式,之所以叫懒汉,是因为该模式是先判断再生成,最核心的点在于"懒",最大的缺点是非线程安全

懒汉模式(Lazy Loading)-- 线程安全版本

加锁,有个最大的缺点就是每次调用该方法时都需要进行锁操作,在性能上相对不高效:

2.2 sync.once实现代码

相关推荐
重生之我是Java开发战士3 天前
【Java SE】多线程(三):单例模式,阻塞队列,线程池与定时器
java·javascript·单例模式
许彰午4 天前
34_Java设计模式之单例模式
java·单例模式·设计模式
罗超驿6 天前
10.Java单例模式全解析:饿汉式与懒汉式实现及线程安全深度剖析
安全·单例模式·javaee
布朗克1686 天前
33 设计模式精讲
java·单例模式·设计模式
雨浓YN6 天前
基于设计模式的Winform软件框架-01Xml\Log\Ini日志(单例模式+生产者消费者模式)
单例模式·设计模式
仙俊红7 天前
Java 单例模式:类里面为什么可以有自己类型的字段?
java·开发语言·单例模式
swordbob7 天前
prototype 注入到 singleton 里,prototype是否还是线程安全的
安全·spring·单例模式·原型模式
谁似人间西林客9 天前
工业大数据实战:看中国智造如何用数据驱动效率革命
大数据·单例模式
张小姐的猫9 天前
【Linux】多线程 —— 线程池 | 单例模式 | 常见锁
linux·运维·服务器·c++·单例模式·设计模式·策略模式
Java面试题总结10 天前
双重检验锁的单例模式在高并发下的可见性问题
单例模式