Criação de objetos: construtores ou métodos estáticos de fábrica

Eu estou passandoJava eficaz e algumas das minhas coisas que considero padrão não são sugeridas pelo livro, por exemplo, criação de objeto, fiquei com a impressão de que os construtores são a melhor maneira de fazê-lo, e os livros dizem que devemos usar métodos de fábrica estáticos, não sou capaz de algumas vantagens e, portanto, desvantagens e, portanto, estou fazendo esta pergunta, eis os benefícios de usá-lo.

Vantagens:

Uma vantagem dos métodos estáticos de fábrica é que, diferentemente dos construtores, eles têm nomes.Uma segunda vantagem dos métodos estáticos de fábrica é que, diferentemente dos construtores, eles não precisam criar um novo objeto cada vez que são chamados.Uma terceira vantagem dos métodos estáticos de fábrica é que, diferentemente dos construtores, eles podem retornar um objeto de qualquer subtipo de seu tipo de retorno.Uma quarta vantagem dos métodos estáticos de fábrica é que eles reduzem a verbosidade da criação de instâncias de tipo parametrizadas.

Desvantagens:

A principal desvantagem de fornecer apenas métodos estáticos de fábrica é que as classes sem construtores públicos ou protegidos não podem ser subclassificadas.Uma segunda desvantagem dos métodos estáticos de fábrica é que eles não são facilmente distinguíveis de outros métodos estáticos.

Referência: Java Efetivo, Joshua Bloch, Edição 2, pág: 5-10

Não sou capaz de entender a quarta vantagem e a segunda desvantagem e agradeceria se alguém pudesse explicar esses pontos. Também gostaria de entender como decidir usar o Constructor ou o Static Factory Method para criação de objetos.

questionAnswers(3)

yourAnswerToTheQuestion