Конструктор класса или метод возврата статического объекта? - PullRequest
0 голосов
/ 13 июня 2018

Любопытство заставило меня задать этот вопрос.Я хотел бы знать, что лучше использовать для создания экземпляра класса.

Я мог бы сделать это с помощью конструктора:

public ExampleClass(someParameters){}

, или я мог бы сделать это с общедоступной статическойМетод:

public static ExampleClass getInstance(someParameters){return new ExampleClass}

Лично мне нравится использовать статические методы для создания экземпляра класса, потому что выглядит таким образом чище.Тем не менее, я был бы очень признателен за некоторые поддерживаемые мнения по этому поводу, потому что я просто увлекаюсь тем, что хотел бы писать более профессионально выглядящий код.

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Из книги «Эффективное Java» Джошуа Блок оспаривает, что лучше иметь статические фабричные методы для создания объектов, чем простые старые конструкторы.Преимущества включают

  1. В отличие от конструкторов, они имеют имена

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

  3. В отличие от конструкторов, они могут возвращать объект любого подтипа своего возвращаемого типа

  4. Они уменьшают многословность создания экземпляров параметризованного типа

Недостатки:

  1. Они не могут использоваться при построении подклассов
  2. Их трудно отличить от других статических методов
0 голосов
/ 13 июня 2018

Итак, ваш вопрос: использовать статические фабричные методы?Хорошо используйте их, когда они уместны.Например, они могут иметь имя типа of или create и т. Д. Таким образом, они могут иметь имя с именем (в отличие от конструкторов, которые должны иметь то же имя, что и класс).

ТогдаВы можете вернуть подтип или кэшировать объект - вы не можете сделать это с помощью простого конструктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...