本文主要是介绍记录|单例模式小记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 前言
- 一、单例模式
- 1.1 什么是单例模式
- 1.2 常见单例模式
- 二、单例模式对比
- 更新时间
前言
参考文章:
去读队友写的代码的时候由于看不懂才去学习的。
一般情况下,这种是用于数据库的开销避免。
例如:
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)单例模式
二、单例模式对比
- 饿汉式单例模式
类加载时就完成了实例化。避免了同步问题。
构造函数比较复杂,可能会造成资源浪费
public class Singleton {private static final Singleton instance = new Singleton();private Singleton() {}public static Singleton getInstance() {return instance;}
}
- 懒汉式单例模式:【这里用C#代码】
双重检查锁定机制确保了多线程环境下的安全性
实现懒汉式单例模式需要处理同步问题,增加了代码的复杂性。
public sealed class Singleton
{private static Singleton instance;private Singleton() { }public static Singleton Instance{get{if (instance == null){instance = new Singleton();}return instance;}}
}
- 双重检查锁定 单例模式
拥有饿汉式的优点,又保证了线程的安全,避免了不必要的同步开销。
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;}
}
更新时间
这篇关于记录|单例模式小记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!