Довольно прямой вопрос.
Что такое Singleton и когда я должен использовать ее?
Singleton - это класс, который позволяет создавать только один экземпляр, который будет создан - и дает простой, легкий доступ к указанному экземпляру. Помещение Singleton - это шаблон в разработке программного обеспечения.
Существует реализация C # «Реализация рисунка Singleton в C #» , охватываю большую часть того, что вам нужно знать, включая некоторые хорошие советы относительно Безопасность нитей .
Честно говоря, очень редко, что вам нужно реализовать синглтон - на мой взгляд, это должно быть одним из тех вещей, о которых вы должны знать, даже если он не используется слишком часто.
Это дизайн шаблона, и он не специфичен для C #. Подробнее об этом по всему Интернету и так, как в этом Статья Википедии .
в разработке программного обеспечения, Singleton шаблон - это шаблон дизайна, который используется для ограничения реализации класс к одному объекту. Это полезно когда именно один объект необходим для координировать действия по системе. Концепция иногда обобщена к системам, которые работают больше эффективно, когда только один объект существует, или что ограничивает Эксирование определенного количества Объекты (скажем, пять). Некоторые считают это антизаблоки, судя по этому изменился, представляет ненужные ограничения в ситуациях, где подошва экземпляр класса на самом деле не требуется и вводит глобальное состояние в приложение.
Вы должны использовать его, если вы хотите, чтобы класс мог только один раз.
Что это такое: класс, для которого существует только один, постоянный случай на всю жизнь приложения. Смотреть Шаблон синглтон .
Когда вы должны использовать его: как можно меньше. Только когда вы абсолютно определены , что вам это нужно. Я не хочу говорить «никогда», но обычно есть лучшая альтернатива, такая как инъекция зависимости или просто статический класс.
Вы попросили C #. Тривиальный пример:
public class Singleton
{
private Singleton()
{
// Prevent outside instantiation
}
private static readonly Singleton _singleton = new Singleton();
public static Singleton GetSingleton()
{
return _singleton;
}
}
В то время как может быть только один экземпляр Singleton, он не такой, как статический класс. Статический класс может содержать только статические методы и никогда не может быть создан, тогда как экземпляр Singleton может использоваться таким же образом, как и любой другой объект.
Одиночка (и она не привязана к C#, это шаблон проектирования OO) - это когда вы хотите разрешить только ОДИН экземпляр класса, создаваемый во всем вашем приложении. Использование, как правило, включает в себя глобальные ресурсы, хотя я скажу по личному опыту, они очень часто являются источником большой боли.
Вот что синглтон: http://en.wikipedia.org/wiki/singleton_pattern
Я не знаю C #, но на самом деле это то же самое на всех языках, только реализация отличается.
Вы должны вообще следует избегать Singleton, когда это возможно, но в некоторых ситуациях это очень удобно.
Извините за мой английский;)