Что такое одиночный элемент в C#?

Довольно прямой вопрос.

Что такое Singleton и когда я должен использовать ее?

170
задан Sergio Tapia 28 January 2010 в 15:37
поделиться

7 ответов

Singleton - это класс, который позволяет создавать только один экземпляр, который будет создан - и дает простой, легкий доступ к указанному экземпляру. Помещение Singleton - это шаблон в разработке программного обеспечения.

Существует реализация C # «Реализация рисунка Singleton в C #» , охватываю большую часть того, что вам нужно знать, включая некоторые хорошие советы относительно Безопасность нитей .

Честно говоря, очень редко, что вам нужно реализовать синглтон - на мой взгляд, это должно быть одним из тех вещей, о которых вы должны знать, даже если он не используется слишком часто.

135
ответ дан 23 November 2019 в 20:48
поделиться

Это дизайн шаблона, и он не специфичен для C #. Подробнее об этом по всему Интернету и так, как в этом Статья Википедии .

в разработке программного обеспечения, Singleton шаблон - это шаблон дизайна, который используется для ограничения реализации класс к одному объекту. Это полезно когда именно один объект необходим для координировать действия по системе. Концепция иногда обобщена к системам, которые работают больше эффективно, когда только один объект существует, или что ограничивает Эксирование определенного количества Объекты (скажем, пять). Некоторые считают это антизаблоки, судя по этому изменился, представляет ненужные ограничения в ситуациях, где подошва экземпляр класса на самом деле не требуется и вводит глобальное состояние в приложение.

Вы должны использовать его, если вы хотите, чтобы класс мог только один раз.

2
ответ дан 23 November 2019 в 20:48
поделиться

Что это такое: класс, для которого существует только один, постоянный случай на всю жизнь приложения. Смотреть Шаблон синглтон .

Когда вы должны использовать его: как можно меньше. Только когда вы абсолютно определены , что вам это нужно. Я не хочу говорить «никогда», но обычно есть лучшая альтернатива, такая как инъекция зависимости или просто статический класс.

39
ответ дан 23 November 2019 в 20:48
поделиться

Вы попросили C #. Тривиальный пример:


public class Singleton
{
    private Singleton()
    {
        // Prevent outside instantiation
    }

    private static readonly Singleton _singleton = new Singleton();

    public static Singleton GetSingleton()
    {
        return _singleton;
    }
}
53
ответ дан 23 November 2019 в 20:48
поделиться

В то время как может быть только один экземпляр Singleton, он не такой, как статический класс. Статический класс может содержать только статические методы и никогда не может быть создан, тогда как экземпляр Singleton может использоваться таким же образом, как и любой другой объект.

5
ответ дан 23 November 2019 в 20:48
поделиться

Одиночка (и она не привязана к C#, это шаблон проектирования OO) - это когда вы хотите разрешить только ОДИН экземпляр класса, создаваемый во всем вашем приложении. Использование, как правило, включает в себя глобальные ресурсы, хотя я скажу по личному опыту, они очень часто являются источником большой боли.

6
ответ дан 23 November 2019 в 20:48
поделиться

Вот что синглтон: http://en.wikipedia.org/wiki/singleton_pattern

Я не знаю C #, но на самом деле это то же самое на всех языках, только реализация отличается.

Вы должны вообще следует избегать Singleton, когда это возможно, но в некоторых ситуациях это очень удобно.

Извините за мой английский;)

1
ответ дан 23 November 2019 в 20:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: