Java mal haciendo la práctica: nueva ... () .doSomething ()?

ItFreak:

Acabo de ver un trozo de código que tenía algunas clases con un solo método. I elegido un ejemplos:

public class TempDirCleanupProcess {
  public void cleanup(final File directory) {} 
}

Luego, más adelante en el código se llamó al método de la siguiente manera:

new TempDirCleanupProcess().cleanup(tempDir);

Ahora me pregunto si esto es una mala práctica, porque he visto como un "comportamiento" únicamente con métodos estáticos antes. Cualquier opiniones sobre esto?

Andrew Tobilko:

Claro, podría ser reprogramado en una clase con un método estático. Sería obviar la necesidad de crear una instancia cada vez que uno necesita para llamar al método. En este caso particular con ningún contexto adicional dado, un método estático sería una solución mejor.

Sin embargo, no hay que olvidar que una clase puede mantener un estado y un solo método puede cambiar ese estado y devolver una referencia al objeto actual.

public class Builder {
  // state

  public Builder buildPart(T part) { 
      // update the state
      return this;
  } 

}

Se asemejaría a una variación de la Builder y darle sentido.

return new Builder();
return new Builder().buildPart(partA);
return new Builder().buildPart(partA).buildPart(partB);

También puedo pensar en un muy mal diseño donde thisse filtró a partir cleanup, por lo que una referencia a que new TempDirCleanupProcess()no se perdiera después de la ejecución de la línea.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=184951&siteId=1
Recomendado
Clasificación