Tengo un caché de datos que se actualiza desde una fuente externa, y quiero limitar mi acceso a su caché (solo lectura) dentro de mi aplicación. No quiero actualizar el origen de datos cada vez que necesito acceder a él (es decir, en la creación de instancias vaya y obtenga todos los datos que necesito, ya que hay bastante información actualizada).Cómo implementar Singleton Pattern (sintaxis)
type MySingleton =
[<DefaultValue>]
static val mutable private instance: MySingleton
static member GetInstance() =
instance
Supongo que este es uno de los problemas sobre la implementación de un proyecto y tratar de aprender el idioma al mismo tiempo. Sé que la lógica debe ser
if instance is null
synchronize
if instance is null
instance = new MySingleton()
pero la falta de nulo me está tirando por un bucle. Creo que puedo utilizar un tipo de opción, etc. pero me está tirando para un bucle
type MySingleton =
[<DefaultValue>]
static val mutable private instance: MySingleton option
static member GetInstance() =
match instance with
| Some(i) -> i
| None ->
*MySingleton.instance = new MySingleton()
MySingleton.instance*
que la lógica es incorrecta según el compilador ...
if Helper.notExists MySingleton.instance then
MySingleton.instance <- Some(new MySingleton())
MySingleton.instance
debo utilizar las instrucciones IF en lugar? ¿Hay un patrón preferido para esta sintaxis en f #?
seria comentario en esta ocasión . Solo para asegurarse de que está pidiendo ayuda sobre lo correcto, un singleton es una clase especial diseñada que puede intentar crear tantas instancias como desee, pero después de la primera, cada vez que se le da la primera instancia. así que si trataste de crear una matriz de singletons, simplemente obtienes una matriz de ese mismo objeto. Después de leer su pregunta, es difícil saber si realmente quiere este comportamiento. – thecoshman
Sí, lo hago; El singleton contendrá un gran caché de datos y proporcionará acceso a los datos cuando sea necesario sin que cada uso de la clase necesite actualizar/recuperar los datos (lo cual es un proceso largo). – akaphenom