Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Реализция шаблона Singleton


Автор: Medved 29.6.2005, 23:36
Назовите пожалуйста реальные случаи, когда без него не обойтись. Именно из практики.

Автор: Domestic Cat 29.6.2005, 23:48
Ты извини, а при чем тут .NET?

Автор: Medved 30.6.2005, 00:41
Цитата
Статические конструкторы - инициализируют класс в целом. Никто не знает когда происходит его вызов - гарантирется лишь то, что он будет вызван до создания первого экземпляра класса.

В качестве примера покажем интереснейшую реализацию паттерна Singleton. В разделе "Переменные" был показана стандартная реализация, которую легко перенести на большинство языков. Здесь же мы приведем вариант, использующий особенности C#.


Код

public class Singleton
{
    private static Singleton _instance;

    public static Singleton Instance
    {
        get
        {
            return _instance;
        }
    }

    public static Singleton
    {
        _instance = new Singleton();
    }
}

Автор: Domestic Cat 30.6.2005, 00:55
Ну и ? Паттерны скорее относятся к разделу Системный анализ, проектирование и UML.

Автор: arilou 30.6.2005, 11:10
Pegas
Можно проще:

Код

public class Singleton
{
  private static Singleton _instance = new Singleton();
  public static Singleton Instance
  {
    get { return _instance; }
  }

  private Singleton()
  {
  }
}



или так:

Код

public class Singleton
{
  private static Singleton _instance = null;
  public static Singleton Instance
  {
    get 
    { 
      if(_instance == null)
        _instance = new Singleton();
      return _instance; 
    }
  }

  private Singleton()
  {
  }
}


Из практики, синглеты применяются там, где необходимо ограничить создание экземпляра класса одним инстансом, например, логгер, реестр объектов (например, фабрик классов), и т.д.

Автор: Medved 30.6.2005, 12:11
Спасибо arilou! +

Автор: arilou 30.6.2005, 12:24
Pegas, welcome smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)