Lectura Efectivo Java, parece que hay muchas ventajas, y muy pocas desventajas, para usar métodos estáticos de fábrica. Por métodos de fábrica estáticas específicamente me refiero a la siguiente¿Debo usar siempre métodos de fábrica estáticos en lugar de constructores?
public class MyClass {
private MyClass() { ... };
public static MyClass getInstance() {
return new A();
}
}
De Effective Java:
Tenga en cuenta que un método de fábrica estática no es el mismo que el patrón Factory Method partir de patrones de diseño [Gamma95, p. 107]. El método de fábrica estático descrito en este artículo no tiene equivalente directo en Patrones de diseño.
¿Ahora es mejor seguir siempre esta práctica, o solo algunas veces?
Si es así, ¿cuándo?
¿Alguna vez se ha hecho demasiado para hacer esto?
Es exagerado cuando es excesivo. Solo tú puedes juzgar eso. En general, te advierto que no sigas * ninguna * sabiduría recibida a ciegas. Por lo general, se descubre que todas las calificaciones originales con las que se cubrió la declaración original se olvidan, solo la regla permanece, a menudo nadie sabe realmente por qué. – EJP
En este caso, tenemos suerte ya que el texto original se conserva en todo su esplendor en el artículo 1 de Java efectivo. Pero no estoy seguro de si mi interpretación de esto es correcta. – cendrillon
Diría que generalmente es exagerado a menos que tenga un motivo específico para querer ocultar el tipo real que se está creando, que es básicamente cuando desea utilizar un patrón de fábrica. Sugiero que en la mayoría de los casos eso no es así. Considere cómo sería la vida, por ejemplo, si no pudiera construir un String o un Thread. – EJP