Estoy pasando por Efectivo Java y algunas de mis cosas que considero de serie no son sugeridas por el libro, por ejemplo creación de objeto, tenía la impresión de que los constructores son la mejor manera de hacerlo y los libros dicen que deberíamos usar métodos estáticos de fábrica, no soy capaz de algunas ventajas y desventajas, y por eso estoy haciendo esta pregunta, aquí están los beneficios de usarla.Creación de objetos: constructores o métodos estáticos de fábrica
Ventajas:
- Una de las ventajas de los métodos estáticos de fábrica es que, a diferencia de los constructores, que tienen nombres.
- Una segunda ventaja de los métodos estáticos de fábrica es que, a diferencia de los constructores, no están obligados a crear un nuevo objeto cada vez que se invocan.
- Una tercera ventaja de los métodos de fábrica estáticos es que, a diferencia de los constructores, pueden devolver un objeto de cualquier subtipo de su tipo de devolución.
- Una cuarta ventaja de los métodos estáticos de fábrica es que reducen la verbosidad de crear instancias de tipo parametrizadas.
Desventajas:
- La principal desventaja de proporcionar sólo los métodos estáticos de fábrica es que clases sin constructores públicos o protegidos no pueden ser subclases.
- Una segunda desventaja de los métodos de fábrica estáticos es que no son fácilmente distinguibles de otros métodos estáticos.
Referencia: Effective Java, Joshua Bloch, Edición 2, pág: 5-10
no soy capaz de comprender la cuarta ventaja y desventaja de la segunda y agradecería si alguien puede explicar esos puntos También me gustaría saber cómo decidir si utilizar Constructor o Método estático de fábrica para la creación de objetos.
En mi humilde opinión, todo se reduce a la complejidad: ¿necesita crear más complejidad si su código no será extendido por nadie más que usted? –
Incluso si nadie más va a extender el código, aún necesita ser entendido fácilmente si vuelves a él dentro de unos meses haciendo mantenimiento/corrección de errores, etc. – Kurru
Entonces, ¿será justo decir que el constructor no creará complejidad y los métodos de fábrica estáticos lo harán? Estoy tratando de entender qué camino traerá más complejidad? – Rachel