2016-02-01 3 views
-1

Предположим, у вас есть класс Writer, который пишет obj по номеру fileName. Что бы вы сделатьСтатическое и инстанцирование

new Writer(fileName, obj).Write(); 

или

Writer.Write(fileName, obj); 

?

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

+1

Я предпочитаю подход «Статический» –

+2

@ SonerGönül тоже, что он написал, тоже: confused: – Yaroslav

+0

@ SonerGönül Вы добавили только скобки вокруг нового вызова, который уже возвращает объект, не так ли? –

ответ

-1

Рассмотрим факты, как:

  • Тестирование важно для вас?
  • Было бы проблемой, если Writer останется в памяти (статистические переменные не очищаются из памяти)
  • Вы хотите, чтобы программное обеспечение было безопасным? (они будут иметь один и тот же экземпляр, так что вы можете получить исключения/проблемы)

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

Why are static variables considered evil?

Кроме того, чтобы решить, если вы должны сделать его статическим:

Java: when to use static methods

2

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

Если метод записи полностью автономный, то его вполне можно использовать как статический метод для класс.

Однако, если цель была лучше определена, то есть Write(FileStream file, Foo object), тогда вы могли бы выбрать способ расширения, а не весь статический класс Writer.

+0

Хороший вопрос, касающийся методов расширения. В моем случае 'Writer' принимает несколько объектов. Я знаю, когда ставить статический метод, и я согласен, что он должен быть статичным, поскольку он не имеет состояния. Тем не менее для более сложных настроек я вижу, что вспомогательные методы не должны принимать все параметры снова и снова. –

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