单例模式_Golang

目录

一、单例模式

1.1 基本概念

1.2 使用场景

二、Golang实现

2.1 懒汉模式(Lazy Loading)


一、单例模式

1.1 基本概念

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

1.2 使用场景

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

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

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

二、Golang实现

2.1 懒汉模式(Lazy Loading)

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

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

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

2.2 sync.once实现代码

相关推荐

  1. 模式模板

    2024-07-22 01:34:01       38 阅读
  2. 模式【C#】

    2024-07-22 01:34:01       48 阅读
  3. python模式

    2024-07-22 01:34:01       55 阅读
  4. 模式详解

    2024-07-22 01:34:01       52 阅读
  5. 模式学习

    2024-07-22 01:34:01       40 阅读
  6. 模式(C++)

    2024-07-22 01:34:01       44 阅读
  7. 设计模式

    2024-07-22 01:34:01       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 01:34:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 01:34:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 01:34:01       45 阅读
  4. Python语言-面向对象

    2024-07-22 01:34:01       55 阅读

热门阅读

  1. 349. 两个数组的交集

    2024-07-22 01:34:01       16 阅读
  2. C# ORM框架-Entity Framework Core

    2024-07-22 01:34:01       21 阅读
  3. vue排序

    2024-07-22 01:34:01       17 阅读
  4. 项目架构图的最佳实践:绘制、维护与示例

    2024-07-22 01:34:01       19 阅读
  5. C++多态

    C++多态

    2024-07-22 01:34:01      18 阅读
  6. Nginx 不转发请求 IP

    2024-07-22 01:34:01       21 阅读
  7. ctfshow web AK杯

    2024-07-22 01:34:01       16 阅读
  8. 正态分布是什么

    2024-07-22 01:34:01       18 阅读