2012-03-10 14 views

Respuesta

15

La mejor fuente en C# Singleton (también cubre Lazy<>) pertenece a Jon Skeet: http://csharpindepth.com/Articles/General/Singleton.aspx

Supongamos que desea tener una clase que:

  • representa un recurso único, por lo que debe tener una instancia única,
  • la instancia necesita una inicialización caro,
  • los parámetros de inicialización estarán disponibles sólo en el tiempo de ejecución,
  • hay casos en los que no utilizará el objeto después de todo,
  • hay más de un hilos que podrían tratar de inicializar el objeto singleton al mismo tiempo,
  • etc.

Si la mayoría de los anteriores las condiciones son verdaderas, deberá asegurarse de que la clase sea Singleton, y la instancia única se inicialice lentamente (no se inicialice hasta que sea necesario). Si se dirige a C# 4.0 o posterior, usar Lazy<> simplifica su diseño, lo hace más legible y fácil de recordar.

1

Los documentos dicen

Utilice una instancia de Lazy (Of T) aplazar la creación de un objeto grande o intensivo de los recursos o la ejecución de un tarea que consume muchos recursos, particularmente cuando tales creación o la ejecución podría no ocurrir durante la vida útil del programa.

Así que solo hace la instancia singleton si la necesita.

La creación de instancias diferidas generalmente es útil para que no se paguen todos los costos de creación cuando la aplicación se inicia: puede brindar una experiencia de usuario más agradable.

Cuestiones relacionadas