请提供单例模式的详细说明和C#实现demo
最佳解决方案
单例模式分为两种:懒汉模式、饿汉模式
懒汉模式:没有用到就不实例化,首次调用的时候在创建相应实例。懒汉模式在多线程同时初始化实例的时候有线程安全问题,需要加同步锁。 也真是因为加了同步锁,导致调用相应实例时每次都要进入锁,会有性能的损失
//简单的线程安全
public sealed class Singleton
{
private static Singleton instance = null;
private static readonly object padlock = new object();
Singleton()
{
}
public static Singleton Instance
{
get
{
lock (padlock)
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
}
}
饿汉模式:不管有咩有使用到对象,该对象加载时就创建实例。因为加载程序时,不管是否使用对象,总要初始化实例,那么程序中单例模式比较多的时候就会造成启动慢的问题。
public sealed class Singleton
{
//静态对象,加载程序即执行
public static readonly Singleton instance = new Singleton();
private Singleton()
{
}
}