Одиночка (Singleton) — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(Диаграмма классов)
(Пример)
Строка 15: Строка 15:
 
=== Пример ===
 
=== Пример ===
 
<source lang="Csharp">
 
<source lang="Csharp">
 +
class MainApp
 +
{
 +
    static void Main()
 +
    {
 +
        Singleton s1 = Singleton.Instance();
 +
        Singleton s2 = Singleton.Instance();
 +
    }
 +
}
 +
 +
class Singleton
 +
{
 +
    static Singleton instance;
 +
 +
    protected Singleton()
 +
    {
 +
    }
 +
 +
    public static Singleton Instance()
 +
    {
 +
        if (instance == null)
 +
        {
 +
            instance = new Singleton();
 +
        }
 +
 +
        return instance;
 +
    }
 +
}
 
</source>
 
</source>
  

Версия 10:16, 1 сентября 2014

К основной странице курса

Назначение

Обеспечивает наличие в системе только одного экземпляра заданного класса, предоставляет доступ к этому экземпляру.

Описание

Реализация

Диаграмма классов

SingletonCommon.png

Участники

Пример

class MainApp
{
    static void Main()
    {
        Singleton s1 = Singleton.Instance();
        Singleton s2 = Singleton.Instance();
    }
}

class Singleton
{
    static Singleton instance;

    protected Singleton()
    {
    }

    public static Singleton Instance()
    {
        if (instance == null)
        {
            instance = new Singleton();
        }

        return instance;
    }
}

Достоинства и недостатки

Варианты