1. ///
/// Ленивый одноэлементный режим при многопоточности, без блокировки, будет проблема многопоточности создавать объекты одновременно, что нарушает принцип одноэлементного режима.
/// </summary>
public class Singleton
{
private static Singleton instance;
private static object _lock = new object();
private Singleton()
{
}
public static Singleton GetInstance()
{
if (instance == null)
{
lock (_lock)
{
if (instance == null)
{
instance = new Singleton();
}
}
}
return instance;
}
}
2. Режим голодного человека. Поскольку объект создается в начале, нет проблемы многопоточных вызовов для одновременного создания объекта.
public class Singleton
{
private static Singleton instance=new Singleton();
private Singleton() { }
public static Singleton GetInstance()
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}