Как часто вы пишете синглтон-классы?
Я бы предположил, что если для вас это довольно частая задача, которая, по вашему мнению, вы теряете производительность, вы, возможно, слишком злоупотребляете моделью. Я считаю, что это очень редко подходит - но может легко привести к трудному для тестирования коду.
Написание синглтон-класса на C # не просто безмозгло, а почти безболезненно. Требуемая плита котла крошечная, при условии, что вам не требуется абсолютная лень до такой степени, что не следует создавать экземпляр синглтона, просто вызывая другие статические методы.
public sealed class Singleton
{
private static readonly Singleton instance = new Singleton();
public static Singleton Instance { get { return instance; } }
private Singleton() {}
// Omit if you don't care about type initializer laziness
static Singleton() {}
}
Очевидно, вам все равно понадобится объявление класса, поэтому вы сохранили три или четыре строки, в зависимости от того, нужен ли вам статический конструктор. Лично я не думаю, что это так много времени для тех редких случаев, когда синглтон действителен, что стоит быть частью фреймворка.
Действительно, трудно понять, как это может быть framework , а не language Feature ... по крайней мере компилятор должен был бы знать об этом, понять, что будет какое-то волшебное свойство "Экземпляр" (или что-то еще), которое оно должно сделать доступным для вызывающих.
Поскольку Эрик Липперт любит указывать (вполне разумно, я мог бы добавить), языковые функции связаны с большими затратами с точки зрения проектирования, реализации и тестирования. Кроме того, каждый разработчик узнает о новой языковой функции. Короче говоря, они должны действительно заработать свою ценность - и для меня паттерн синглтона не достаточно полезен и важен, чтобы сделать планку.