Универсальный одиночный элемент

В принципе, логический оператор И (&&) вернет значение второго операнда, если первый - правy , и он вернет значение первого операнда, если оно сам falsy , например:

true && "foo"; // "foo"
NaN && "anything"; // NaN
0 && "anything";   // 0

Обратите внимание, что значения falsy - это те, которые принуждают к false при использовании в булевом контексте, они null, undefined, 0, NaN, пустая строка и, конечно, false, что-то еще прилегает к true.

19
задан Simon Hughes 19 December 2008 в 11:41
поделиться

3 ответа

Создание singleton-класса является всего несколькими строками кода, и с трудностью создания универсального одиночного элемента, который я всегда пишу тем строкам кода.

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

private static Singleton _instance = new Singleton();

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

30
ответ дан 30 November 2019 в 02:56
поделиться

Ну, это не действительно одиночный элемент - так как Вы не можете управлять T, может быть столько T экземпляры, сколько Вам нравится.

(удаленная гонка потока; отмеченный перепроверяемое использование)

5
ответ дан 30 November 2019 в 02:56
поделиться

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

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

я лично создал бы экземпляр в статическом конструкторе для простой потокобезопасности, также.

В основном я не большая часть поклонника - довольно легко создать singleton-классы, и Вы не должны делать его это часто так или иначе. Одиночные элементы являются болью для тестирования, разъединяясь и т.д.

5
ответ дан 30 November 2019 в 02:56
поделиться
Другие вопросы по тегам:

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