编辑
2025-09-28
C#
00

目录

摘要
正文
单例模式的应用场景
例子1:日志管理器
例子2:子窗体

摘要

单例模式是一种用于限制一个类只能创建一个对象的设计模式。在C#中,我们通过将类的构造函数设置为私有,然后通过一个公有的静态方法来获取类的唯一实例,以此来实现单例模式。

正文

单例模式的应用场景

单例模式通常用于那些系统中只需要一个实例的场景,例如:

  • 用于访问资源的类,例如文件系统、打印机等。
  • 用于保存系统的状态的类,例如系统的配置信息。
  • 用于提供服务的类,例如线程池、缓存等。

例子1:日志管理器

在许多应用中,我们需要一个全局的日志管理器来记录应用的运行情况。这个日志管理器只需要一个实例,我们可以使用单例模式来实现。

C#
public class LogManager { private static LogManager _instance; private static readonly object Lock = new object(); private LogManager() { } public static LogManager Instance { get { if (_instance == null) { lock (Lock) { if (_instance == null) { _instance = new LogManager(); } } } return _instance; } } public void Log(string message) { // 实现日志记录逻辑 Console.WriteLine(message); } }

例子中,我们创建了一个名为LogManager的日志管理器类,这个类只有一个实例。我们可以通LogManager.Instance来获取这个实例,并通过Log方法来记录日志。

这个例子使用了双重检查锁定(Double-Check Locking)机制来确保在多线程环境下LogManager的线程安全。当第一次访问LogManager.Instance时,会创建一个LogManager实例;之后再访问LogManager.Instance时,会直接返回这个实例。

例子2:子窗体

image.png

C#
public partial class frmChild : Form { private static frmChild _instance; public frmChild() { InitializeComponent(); } public static frmChild Instance { get { if (_instance == null || _instance.IsDisposed) { _instance = new frmChild(); } return _instance; } } private void frmChild_Load(object sender, EventArgs e) { } }

调用显示子窗体

C#
private void btnShow_Click(object sender, EventArgs e) { frmChild.Instance.Show(); frmChild.Instance.Show(); }

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!