记录|单例模式小记

目录


前言

参考文章:

去读队友写的代码的时候由于看不懂才去学习的。

一般情况下,这种是用于数据库的开销避免。

例如:

csharp 复制代码
    public class DBConnectionManager
    {
        private static DBConnectionManager instance;
        private DBConnectionManager()
        {
            connection = new MySqlConnection(connString);
        }

        public static DBConnectionManager Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = new DBConnectionManager();
                }
                return instance;
            }
        }
   }

一、单例模式

1.1 什么是单例模式

特点是在第一次使用时才创建实例。

1.2 常见单例模式

饿汉式单例模式、双重检查锁定(Double-Checked Locking)单例模式


二、单例模式对比

  • 饿汉式单例模式
    类加载时就完成了实例化。避免了同步问题。
    构造函数比较复杂,可能会造成资源浪费
java 复制代码
public class Singleton {
    private static final Singleton instance = new Singleton();

    private Singleton() {}

    public static Singleton getInstance() {
        return instance;
    }
}
  • 懒汉式单例模式:【这里用C#代码】
    双重检查锁定机制确保了多线程环境下的安全性
    实现懒汉式单例模式需要处理同步问题,增加了代码的复杂性。
csharp 复制代码
public sealed class Singleton
{
    private static Singleton instance;

    private Singleton() { }

    public static Singleton Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new Singleton();
            }
            return instance;
        }
    }
}
  • 双重检查锁定 单例模式
    拥有饿汉式的优点,又保证了线程的安全,避免了不必要的同步开销。
java 复制代码
public class Singleton {
    private static volatile Singleton instance;

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

更新时间

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