📜  单例模式 c# (1)

📅  最后修改于: 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;
            }
        }
    }
}

在上述实现中,instancepadlock都是类的静态私有成员。Instance是一个公共的静态访问方法,在方法内首先进行线程锁定,然后判断实例是否已经创建,如果未创建,则进行实例化并返回单例的引用。

总结: 单例模式可以确保一个类只有一个实例,并且提供全局访问点。在C#中可以通过饿汉式单例和懒汉式单例两种方式进行实现。选择合适的方式可以提高代码的可读性和可维护性。