Recientemente descubrí una forma interesante de crear una nueva instancia de un objeto en Google Guava y Project Lombok: Ocultar un constructor detrás de un método de creador estático. Esto significa que en lugar de hacer new HashBiMap()
, usted hace HashBiMap.create()
.¿Ocultando un constructor detrás de un método de creador estático?
Mi pregunta es ¿por qué? ¿Qué ventaja tienes de ocultar el constructor? Para mí, no veo absolutamente ninguna ventaja de hacer esto, y parece romper los principios básicos de creación de objetos. Desde el principio, usted crea un objeto con new Object()
, no con algún método Object.createMe()
. Esto casi parece crear un método por el bien de crear un método.
¿Qué ganas al hacer esto?
Tenga en cuenta que obtendrá advertencias utilizando el 'nuevo HashBiMap()' sin formato, donde no utilizará 'HashBiMap.create()'. Esta es la razón principal por la que Guava usa este patrón, como mencioné en mi respuesta. – ColinD