Mi diseño incorpora una pequeña abstracción de base de datos, implementando cada base de datos como Singleton (bueno, object
), con métodos personalizados en la base de datos para el par de operaciones que el código llama (es principalmente un analizador de registro, descargando estadísticas interesantes a una base de datos).En Scala, ¿cómo le daría un Singleton a un constructor?
Me gustaría construir las clases de base de datos Singleton si es posible, de modo que en tiempo de ejecución, cada una se construya con valores de configuración (y esos valores permanezcan constantes durante el resto del tiempo de ejecución del programa). Esto me permitiría probar mejor el código también (ya que puedo burlarme de las bases de datos usando Mockito o algo así).
Todavía estoy aprendiendo Scala, pero parece que no hay forma de conectar un constructor a Singleton, y agradecería cualquier aporte sobre este problema. ¿Hay alguna manera mejor de hacer lo que estoy haciendo? ¿Hay alguna forma preferida de construir un Singleton?
Saludos de antemano por cualquier ayuda.
Gracias montones para la respuesta rápida. Mi preocupación con eso es que quiero pasarle argumentos al constructor. Sin embargo, pensando en ello, me estoy dando cuenta de lo sucio que es ese truco. Tendré que reconsiderar mi diseño. – frio
Sí, es un truco. Los singletons son estado global, y el objetivo de Scala es permitir el procesamiento paralelo invisible. Esto significa que no puedes tener estado global. – fishtoprecords
@frio, podría ser importante recordar que el constructor del objeto (cuerpo) no se ejecuta hasta que haga referencia al objeto o sus contenidos (campos o métodos) que le da cierta medida de control sobre la construcción del objeto. –