📅  最后修改于: 2023-12-03 15:07:20.465000             🧑  作者: Mango
在软件开发中,单例模式是一种常用的设计模式。它可以确保一个类只有一个实例,并且提供全局访问点。
在C#中,实现单例模式有多种方法,下面介绍其中两种常用的方式。
这种方式在类加载时就创建了类的唯一实例,因此在多线程环境下也可以保证单例的唯一性。
public class Singleton
{
private static readonly Singleton instance = new Singleton();
private Singleton(){}
public static Singleton Instance
{
get { return instance; }
}
}
在上述实现中,instance
是类的静态私有成员,它通过readonly
关键字被初始化为类的唯一实例。Instance
是一个公共的静态访问方法,返回单例的实例。
这种方式在第一次调用访问方法时才会创建类的唯一实例,因此也被称为延迟加载方式。需要注意的是,在多线程环境下,需要进行同步处理才能确保单例的唯一性。
public class Singleton
{
private static Singleton instance = null;
private static readonly object padlock = new object();
private Singleton(){}
public static Singleton Instance
{
get
{
lock(padlock)
{
if(instance == null)
{
instance = new Singleton();
}
return instance;
}
}
}
}
在上述实现中,instance
、padlock
都是类的静态私有成员。Instance
是一个公共的静态访问方法,在方法内首先进行线程锁定,然后判断实例是否已经创建,如果未创建,则进行实例化并返回单例的引用。
总结: 单例模式可以确保一个类只有一个实例,并且提供全局访问点。在C#中可以通过饿汉式单例和懒汉式单例两种方式进行实现。选择合适的方式可以提高代码的可读性和可维护性。