Sei sulla pagina 1di 2

Patrn de Diseo Singleton y Reutilizacin de Objetos en Visual Basic.

net Segn Wikipedia el patrn de diseo singleton (instancia nica) est diseado para restringir la creacin de objetos pertenecientes a una clase o el valor de un tipo a un nico objeto. Su intencin consiste en garantizar que una clase slo tenga una instancia y proporcionar un punto de acceso global a ella. Y que gano con esto? Bueno al principio como todo estudiante no comprenda la funcionalidad ni como se aplicaba este patrn, pero ahora con un poco ms de experiencia puedo ver realmente el valor de este patrn. Primero que todo los que hemos programado nos ha pasado la engorrosa situacin de que en cada Formulario que creamos o en cada clase que necesita de otra comenzamos a crear nuevos objetos a partir de la clase, as que el resultado es que si en 7 clases necesitamos instanciar una misma clase porque la necesitamos tenemos que crear 7 objetos de dicha clase. El problema aqu es que la creacin de objetos consume recursos y recursos que son vitales para el buen rendimiento de la aplicacin, y ahora si mantengo estos 7 objetos en 7 formularios abiertos son 7 objetos dems que estn en memoria y que a la larga hacen lo mismo. Esta situacin la podemos resolver generando un nico objeto de la clase para los 7 formularios que tengamos, esto en palabras tcnicas es reutilizar los objetos para ahorrar recursos (memoria). En resumidas cuentas desde todos los formularios que sean necesarios vamos a acceder a un objeto compartido y que para ahorrar memoria solo lo instanciaremos una nica vez en la aplicacin (puede ser en el form principal de la aplicacin o en el main). Ahora para aplicar este patrn o cualquier otro solo es necesario conocer los conceptos de orientacin a objetos como objeto, clase, especificador de acceso, etc. En el patrn de Diseo Singleton el especificador de acceso Shared (Static en JAVA y C#) y Private juegan el rol importante, ya que la lgica del singleton es que la misma clase genere la instancia. Y esto se logra privando a las dems clases de llamar al mtodo constructor de la clase necesitada, y brindando en su lugar un mtodo que construye la instancia de la misma clase y la devuelve. Aplicando esto en en VB.NET quedara asi

Class MiClase 'Declaramos una variable del mismo tipo de la clase que contendra la instancia, Esta es Private para que sea unicamente accedida por esta clase y shared para que sea accedida sin necesidad de instanciar la clase. Private Shared instanciaClase As MiClase = Nothing 'Declaramos el Constructor Private para que este quede oculto a las otras clases Private Sub New() ' This call is required by the designer, Esto es para WPF en WinForms se Omite. InitializeComponent() ' Add any initialization after the InitializeComponent() call. End Sub 'Creamos una funcion publica y estatica para que la accedamos desde cualquier clase sin instanciar la clase contenedora(osea MiClase), La FUNCION valida que la variable de la Clase este vacia si esta asi entonces creara una instancia y la devolver, si ya esta llena entonces solo la devolvera Public Shared Function Instancia() If (instanciaClase Is Nothing) Then instanciaClase = New MiClase Return instanciaClase End If Return instanciaClase End Function End Class

Para llamar a esta clase singleton lo podemos hacer desde cualquier lugar y quedara asi.
MiClase.Instancia()

Claro que tendramos que crear una variable contenedora.


Dim A As MiClase = MiClase.Instancia()

Potrebbero piacerti anche