2011-01-20 3 views
1

Если мы можем убедиться, что экземпляр является singleton, то статический метод всегда может быть преобразован в метод экземпляра? Это правильно?Может ли статический метод всегда преобразовываться в метод экземпляра?

+2

Использование статических методов экземпляров vs является вопросом дизайна, почему бы один преобразовать статические методы в методы экземпляра, если есть причины, чтобы он был статичным? – Matten

+0

Если экземпляр является синглом, почему вы беспокоитесь? Статический класс (и статические методы) эффективно реализует одноэлементный шаблон. – Massif

+0

Возможно, возникнут некоторые проблемы с производительностью, если вам нужно указать очень сложный класс только для вызова метода (который должен быть статическим), который абсолютно не зависит от какой-либо информации о состоянии. – Matten

ответ

3

Конечно, метод, обозначенный как static, может быть преобразован в метод экземпляра. Методы, отмеченные как static, должны быть методами, которые не используют информацию о состоянии, специфичную для экземпляра (если только экземпляр не передан как параметр). Они могут быть переписаны как методы экземпляра и по-прежнему не полагаются на информацию о состоянии, специфичную для экземпляра (или вместо этого используют).

+1

За исключением метода GetInstance() в одноэлементном классе;) – Matten

+0

@Matten: Нет, это также можно переписать как метод экземпляра. – jason

+0

, но нет, если конструктор является закрытым, или я ошибаюсь? – Matten

0

Вы можете сделать это, конечно, но вы можете сломать существующий код, вызывающий статический метод. Особенно, если метод общедоступен.

Смежные вопросы