技术文摘
C# 单例模式的多种实现方式,你掌握了吗?
2024-12-30 15:18:15 小编
C# 单例模式的多种实现方式,你掌握了吗?
在 C# 编程中,单例模式是一种常见且实用的设计模式。它确保一个类只有一个实例存在,并提供全局访问点来获取该实例。下面让我们一起来探讨 C# 中单例模式的多种实现方式。
一种常见的实现方式是“懒汉式单例”。在这种方式中,实例的创建在第一次被请求时才发生。通过使用私有构造函数和静态私有变量来存储唯一实例,并提供一个公共的静态方法获取实例。这样可以延迟实例的创建,直到真正需要的时候,从而节省资源。
class LazySingleton
{
private static LazySingleton _instance;
private LazySingleton() {}
public static LazySingleton GetInstance()
{
if (_instance == null)
{
_instance = new LazySingleton();
}
return _instance;
}
}
另一种方式是“饿汉式单例”。在类加载时就创建实例,保证了线程安全,但可能会在不需要的时候就占用资源。
class EagerSingleton
{
private static readonly EagerSingleton _instance = new EagerSingleton();
private EagerSingleton() {}
public static EagerSingleton GetInstance()
{
return _instance;
}
}
还有一种基于双重检查锁定(Double-Checked Locking)的实现方式。通过在获取实例的方法中进行两次检查,减少了同步带来的性能开销。
class DoubleCheckedSingleton
{
private static DoubleCheckedSingleton _instance;
private static readonly object _lock = new object();
private DoubleCheckedSingleton() {}
public static DoubleCheckedSingleton GetInstance()
{
if (_instance == null)
{
lock (_lock)
{
if (_instance == null)
{
_instance = new DoubleCheckedSingleton();
}
}
}
return _instance;
}
}
在实际应用中,选择哪种单例模式的实现方式取决于具体的需求和场景。例如,如果对性能要求较高且能接受在类加载时创建实例,饿汉式可能是较好的选择;如果希望在需要时才创建实例并且对线程安全有较高要求,双重检查锁定的方式可能更合适。
无论选择哪种方式,单例模式都能有效地管理全局唯一的资源,提高代码的可维护性和可扩展性。希望您通过对这些不同实现方式的了解,能够在 C# 编程中更加灵活地运用单例模式,提升您的开发效率和代码质量。
- 注册表隐藏自定义磁盘盘符的方法
- 鸿蒙 3.0.0.339 推送及更新内容汇总
- 取消磁盘自动扫描 reg
- 光驱硬盘自动运行特性的 REG 打开与关闭
- Windows 垃圾与注册表的快速清理之法
- 鸿蒙 HarmonyOS 3.0.0.101 内测版推送 仅 304MB 升级
- 在 XP 系统中将 Administrator 帐户设为不隐藏的注册表设置
- 鸿蒙系统虚拟按键设置方法 屏幕内三键导航教程
- 鸿蒙系统应用自动同步的位置及开启技巧
- 解决 SQLServer 安装提示挂起的 reg 文件导入方法
- 在注册表中为各类文本编辑器添加右键选项
- 如何对 VMware 虚拟机的 bug 记录进行分析
- 通过 WinPE 更改原系统注册表以修复系统
- 华为鸿蒙 OS 3.0 新功能 9 月开启公测 抢先版 4 款机型能升级
- 鸿蒙系统如何限制共享热点流量用量 鸿蒙热点流量限制设置技巧