Uso las clases de utilidad estáticas para funciones compartidas que se invocarán desde diferentes contextos - p. Ej. funciones matemáticas similares a las de java.util.Math. Este es un patrón apropiado, suponiendo que se trata de funciones "puras" (es decir, no manipular ningún estado ni acceder a ningún dato que no sean los parámetros que se les dan).
Rara vez uso singletons, y en particular trato de evitar singletons globales. Sufren de todos los problemas habituales asociados con las variables globales. Hacen que las pruebas sean difíciles, y a menos que su singleton también sea inmutable, introducen problemas de estado global. El lugar principal que he encontrado útiles es en cortes de rendimiento que dependen de la identidad del objeto - por ejemplo:
public static final END_OF_SEQUENCE_MARKER=new EndMarker();
A continuación, cuando se atraviesa una secuencia sólo se puede probar si (== objeto END_OF_SEQUENCE_MARKER). Debido a que es una referencia final estática, el JIT convertirá esto en una prueba extremadamente rápida ....
EDITAR
Habiendo visto a su clarificación, algunos comentarios adicionales rápidas:
- clases de fábrica estático por lo general no tienen sentido. El objetivo de una clase de fábrica es que puede crear una instancia (¡o una subclase!), Realizar algunos cambios de configuración en el objeto de fábrica y luego usarlo para generar instancias de objetos de acuerdo con la configuración que necesite. Si va a hacer que sea estático, también podría simplemente crear un método MyObject.create (..) estático en lugar de tener una clase MyObjectFactory estática completa ...
- Del mismo modo, ¿por qué tener una clase de gestor de singleton separado? ? Por lo general, la mejor clase para administrar el singleton es la clase singleton en sí misma, ya que normalmente necesitará acceder a un constructor privado, suponiendo que quiera garantizar que solo se creará una sola instancia. Con solo tener un método simple MySingleton.getInstance() estático usualmente hará todo lo que necesite.
Eso es bastante vago ... –
Igualado, aunque es posible que desee ser un poco más descriptivo con sus preguntas en un futuro próximo. :-) –
Supongo que es lo que la gente de stackoverflow considera fuera de tema. Si expresa la motivación de su pregunta y muestra algunos ejemplos de la vida real, entonces las respuestas pueden estar más enfocadas. De lo contrario, es probablemente una pregunta demasiado amplia y subjetiva. –