Digamos que tiene una clase llamada Explosion en la que no tiene sentido crear una instancia de la misma, sin cierta información de otra instancia de clase. El constructor no se hace público.Crear un objeto basado en el estado de otro objeto en Java
¿Es mejor hacerlo de esta manera:
// both classes are in the same package
Explosion e;
Collision c = new Collision()
// do some stuff with collision
e = c.createExplosion()
O es mejor para la explosión de tener un método estático para la creación de una instancia y se pasa en un objeto de colisión como un argumento:
Explosion e
Collision c = new Collision()
// do some stuff with collision
e = Explosion.createExplosion(c)
Cuando eres el autor de ambas clases.
Terminé con las soluciones que más me gustan cuando diseño para pruebas de unidades sencillas. Los métodos estáticos y los "nuevos" operadores señalan clases específicas y dificultan las implementaciones simuladas. – Christian