Каков наилучший способ реализации Singleton Design Pattern в C # с ограничением производительности? - PullRequest
6 голосов
/ 25 мая 2010

Пожалуйста, дайте мне знать, как лучше всего реализовать шаблон проектирования Singleton в C # с ограничением производительности?

Ответы [ 3 ]

4 голосов
/ 14 марта 2016

Перефразировано с C # в глубину : Существуют различные способы реализации шаблона синглтона в C #, от Не ориентирован на многопотоковое исполнение до полностью загруженной, поточно-ориентированной, простой и высокопроизводительной версии.

Лучшая версия - использование Ленивого типа .NET 4:

public sealed class Singleton
{
  private static readonly Lazy<Singleton> lazy =
      new Lazy<Singleton>(() => new Singleton());

  public static Singleton Instance { get { return lazy.Value; } }

  private Singleton()
  {
  }
}

Это просто и хорошо работает. Это также позволяет вам проверить, был ли создан экземпляр со свойством IsValueCreated , если вам это нужно.

2 голосов
/ 25 мая 2010
public class Singleton 
{
    static readonly Singleton _instance = new Singleton();

    static Singleton() { }

    private Singleton() { }

    static public Singleton Instance
    {
        get  { return _instance; }
    }
}
1 голос
/ 03 февраля 2011

Только недавно я узнал, что синглтон считается анти-паттерном для многих и его следует избегать. Более чистое решение может заключаться в использовании DI или других функций. Даже если вы идете с синглтоном, просто прочитайте эту интересную дискуссию Что плохого в синглетах?

...