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.:
Publicar un comentario