Singleton Class: Singleton Class es una clase de la cual solo puede existir una sola instancia por classloader.
Clase estática/auxiliar (Clase con solo campos/métodos estáticos): No existe instancia de esta clase. Solo se puede acceder directamente a los campos y métodos como constantes o métodos auxiliares.
A continuación se hace referencia a partir de este blog "Static classes in Java" lo describe muy bien. El blog también tiene ejemplos para explicar misma:
Singleton ejemplo:
public class ClassicSingleton {
private static ClassicSingleton instance = null;
private ClassicSingleton() {
// Exists only to defeat instantiation.
}
public static ClassicSingleton getInstance() {
if (instance == null) {
instance = new ClassicSingleton();
}
return instance;
}
}
clase estática ejemplo:
/**
* A helper class with useful static utility functions.
*/
public final class ActionHelper {
/**
* private constructor to stop people instantiating it.
*/
private ActionHelper() {
// this is never run
}
/**
* prints hello world and then the users name
*
* @param users
* name
*/
public static void printHelloWorld(final String name) {
System.out.println("Hello World its " + name);
}
}
Entonces, ¿cuál es la diferencia entre los dos ejemplos y por qué piense que la segunda solución es mejor para una clase que no quiere o necesita crear una instancia. En primer lugar, el patrón Singleton es muy útil si desea crear una instancia de una clase. Para mi clase de ayuda no queremos realmente instanciar ninguna copia de la clase. La razón por la que no deberías usar una clase Singleton es porque para esta clase de ayuda no usamos ninguna variable. La clase singleton sería útil si contuviera un conjunto de variables de las que solo quisiéramos un conjunto y los métodos usaran esas variables, pero en nuestra clase de ayuda no utilizamos ninguna variable aparte de las pasadas (que hacemos finales) . Por esta razón, no creo que deseemos una instancia singleton porque no queremos ninguna variable y no queremos que nadie esté instantaneando esta clase. Entonces, si no quieres que nadie crea una instancia de la clase, que normalmente es si tienes algún tipo de clase auxiliar/utilitaria, entonces utilizo la que yo llamo la clase estática, una clase con un constructor privado y solo consiste en métodos estáticos sin ningún cualquier variable
La misma respuesta también se hace referencia desde mi respuesta here
Suena como un duplicado de http://stackoverflow.com/questions/519520/difference-between-static-class-and-singleton-pattern – oksayt
No olvide marcar la respuesta como aceptada si obtuvo la información que desea .. –
check http://stackoverflow.com/a/37114702/1406510 – nanosoft