enero 08, 2007

El Patrón Singleton

Objetivo: Hacer que la instancia de un objeto sea accesible globalmente, y que sea única. Para ello es necesario crear un método en la clase que se desee sólo tener una instancia a la ves.

Yo por ejemplo hice un objeto mapper el cuál necesitaba que no fuera instanciado más de una vez por la aplicacion que lo usara.

'---1 La clase Singleton-----------------------------------------------------
Public Class MapperEmpleado
Private pnombre As String

Public Property nombre() As String
Get
Return pnombre
End Get
Set(ByVal Value As String)
pnombre = Value
End Set
End Property

Private Shared mInstance As MapperEmpleado
Private Shared mMutex As New System.Threading.Mutex()

' Constructor privado para no poder instanciar la clase
Private Sub New()
End Sub

'Método que verifica la existencia del objeto al querer instanciar.
Public Shared Function GetInstance() As MapperEmpleado
mMutex.WaitOne()
If mInstance Is Nothing Then
mInstance = New MapperEmpleado()
End If
mMutex.ReleaseMutex()
Return mInstance
End Function

End Class

--2 La aplicación desde que se consume a la clase que implementa el patrón singleton.

'Para poder instanciar el objeto se usa el método GetInstance ya que el constructor New() es privado.
Dim obj As MapperEmpleado = MapperEmpleado.GetInstance
obj.nombre = "Julio"
Dim obj2 As MapperEmpleado = MapperEmpleado.GetInstance
MessageBox.Show(obj2.nombre)
--El nombre es el mismo porque sólo se permite una clase.


Aquí un link de referencia sobre este patrón:
http://www.mug.org.ar/Patrones/ArticPatrones/304.aspx

http://searchvb.techtarget.com/tip/0,289483,sid8_gci921128,00.html

No hay comentarios.: