Я переживаю Эффективную Java, и некоторые из моих вещей, которые я считаю стандартными, не предлагаются в книге, например, создание объекта, у меня создалось впечатление, что конструкторы - лучший способ сделать это, и книги говорят, что мы должен использовать статические методы factory, у меня мало возможностей и недостатков, поэтому я задаю этот вопрос, вот преимущества его использования.
<сильные > Преимущества:
- Одним из преимуществ статических методов factory является то, что, в отличие от конструкторов, они имеют имена.
- Второе преимущество статических методов factory заключается в том, что, в отличие от конструкторов, они не обязаны создавать новый объект каждый раз при вызове theyre.
- Третье преимущество статических методов factory заключается в том, что, в отличие от конструкторов, они могут возвращать объект любого подтипа возвращаемого типа.
- Четвертое преимущество статических методов factory заключается в том, что они уменьшают многословие создания экземпляров параметризованного типа.
Недостатки:
- Основным недостатком предоставления только статических методов factory является то, что классы без публичных или защищенных конструкторов нельзя подклассифицировать.
- Вторым недостатком статических методов factory является то, что они не являются легко отличить от других статических методов.
Ссылка: Эффективная Java, Джошуа Блох, издание 2, стр. 5-10
Я не могу понять четвертое преимущество и второй недостаток и был бы признателен, если кто-нибудь сможет объяснить эти моменты. Я также хотел бы понять, как решить, использовать ли для Constructor или Static factory метод для создания объектов.