Estoy corriendo un servidor que en ocasiones tiene que buscar lo que a consultas de los clientes. Me gustaría escribir la consulta del cliente en el disco para los registros, pero no quiero ralentizar la búsqueda más de lo necesario. (La búsqueda ya es el cuello de botella ...)correctamente usando el patrón de diseño Singleton
Por lo tanto, cuando el cliente realiza una búsqueda, el hilo del cliente envía un mensaje a un hilo singleton, que manejará la escritura del disco, mientras que el hilo del cliente continúa manejando las solicitudes del cliente. De esta forma, el archivo en el disco no se encuentra con problemas de sincronización y no desacelera la experiencia de los clientes.
Tengo una pregunta conceptual aquí: ¿es el singleton apropiado en este caso? He estado usando demasiado el patrón de diseño singleton en mi programación reciente, y quiero asegurarme de que lo estoy usando para su uso previsto.
Cualquier comentario es muy apreciado.
Es difícil responder a esta pregunta sin ver la arquitectura general. Hay algunas desventajas para el patrón Singleton (provoca dificultades de pruebas de unidad, etc.), le toca a usted para determinar si son pertinentes o no ... –
Gracias por la rápida respuesta Oli; He leído sobre las dificultades de las pruebas unitarias pero no entendí las implicaciones generales. ¿Por qué evitar un estado global de tal importancia? Por ejemplo, si solo hay un archivo en el disco en el que escribe un programa, ¿no quiere uno asegurarse de que no se puede acceder al mismo tiempo por diferentes partes? – Sal
la existencia de estado global puede hacer que sea difícil de inyectar dependencias (esta es la base de [pruebas de simulacro] (http://en.wikipedia.org/wiki/Mock_object)). Mire esta conversación para obtener más detalles: http://googletesting.blogspot.com/2008/11/clean-code-talks-global-state-and.html. –