Singleton más legible y accesible en VB.NET

Uno de los patrones de diseño más conocidos y utilizados (si no el que más) es el patrón singleton, que permite garantizar la existencia de una única instancia de una clase evitando la creación de objetos de ese tipo declarando el constructor como privado o protegido. Otra de las ventajas de este patrón es que permite centralizar en un único punto todos los accesos a la instancia.

Una posible implementación en Visual Basic .NET sería la siguiente:

 

VB.NET:
  1. Public Class Singleton
  2.  
  3.     Private Sub New()
  4.     End Sub
  5.  
  6.     Private Shared _instancia As Singleton
  7.  
  8.     Public Shared ReadOnly Property Instancia() As Singleton
  9.         Get
  10.             If _instancia Is Nothing Then
  11.                 _instancia = New Singleton
  12.             End If
  13.  
  14.             Return _instancia
  15.         End Get
  16.     End Property
  17. End Class

 

La forma de acceder a una propiedad de esta clase para asignarle un valor sería:

Singleton.Instancia.MiPropiedad = "miValor"

Esta forma de acceder a una propiedad es un poco artificial y no resulta tan legible o natural como:

Singleton.MiPropiedad = "miValor"

Para conseguir acceder de estar forma a una propiedad de nuestra instancia deberemos crearnos un modulo:

 

VB.NET:
  1. <Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
  2. Public Module Auxiliar
  3.     Public ReadOnly Property SingletonInst() As Singleton
  4.         Get
  5.             Return Singleton.Instancia
  6.         End Get
  7.     End Property
  8. End Module

 

Ahora para acceder a la propiedad simplemente tendremos que escribir:

SingletonInst.MiPropiedad = "miValor"

Esta solución únicamente es valida en Visual Basic.NET debido a que en C# no existen los módulos.

2 Responses to “Singleton más legible y accesible en VB.NET”

  1. TheKeeperOfThe7Keys Says:

    Muy bueno, simple y claro.

  2. Kaiser Says:

    Hola y muchas grcias por compartir el conocimiento con los demas pero tengo una duda…creo la clase Singleton y despues de crearla como la añado al formulario para que cuado lo ejecite se cumpla el algoritmo de Singleton?

Leave a Reply

Antispam. Escriba la palabra 'hola' (sin comillas)