单例模式是一种用于限制一个类只能创建一个对象的设计模式。在C#中,我们通过将类的构造函数设置为私有,然后通过一个公有的静态方法来获取类的唯一实例,以此来实现单例模式。
单例模式通常用于那些系统中只需要一个实例的场景,例如:
在许多应用中,我们需要一个全局的日志管理器来记录应用的运行情况。这个日志管理器只需要一个实例,我们可以使用单例模式来实现。
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
时,会直接返回这个实例。
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 许可协议。转载请注明出处!