Patrones de Comportamiento
MEMENTO (RECUERDO) Comportamiento de Objetos
Código de Ejemplo
Ejemplo Complejo
Namespace Memento.EjemploCliente
Public Class MainAppReal
Public Shared Sub main()
Dim s As Cliente
s = New Cliente()
s.Nombre = "Baltasar Bastian Bux"
s.Telefono = "976.123.456"
s.ImporteVentas = 25000
'// Store internal state
Dim m As ConserjeCliente
m = New ConserjeCliente()
m.Memento = s.ObtenerMemento()
'// Continue changing originator
s.Nombre = "Michael Ende"
s.Telefono = "950.564.321"
s.ImporteVentas = 50000
' // Restore saved state
s.RestaurarMemento(m.Memento)
' // Wait for user
Console.Read()
'-------------------------------------------------------
' Resultado en la consola de la ejecucion de este codigo
'-------------------------------------------------------
'[Originador] - Estableciendo Propiedad Nombre : Baltasar Bastian Bux
'[Originador] - Estableciendo Propiedad Telefono : 976.123.456
'[Originador] - Estableciendo Propiedad ImporteVentas : 25000
'[Originador] - Obteniendo un Memento:
'[Memento ] - Creacion
'[Memento ] - Estableciendo Propiedad Nombre : Baltasar Bastian Bux
'[Memento ] - Estableciendo Propiedad Telefono : 976.123.456
'[Memento ] - Estableciendo Propiedad ImporteVentas : 25000
'[Conserje ] - Almacenado el Memento
'[Originador] - Estableciendo Propiedad Nombre : Michael Ende
'[Originador] - Estableciendo Propiedad Telefono : 950.564.321
'[Originador] - Estableciendo Propiedad ImporteVentas : 50000
'[Conserje ] - Devolviendo el Memento
'[Originador] - Restaurando un Memento:
'[Originador] - Estableciendo Propiedad Nombre : Baltasar Bastian Bux
'[Originador] - Estableciendo Propiedad Telefono : 976.123.456
'[Originador] - Estableciendo Propiedad ImporteVentas : 25000
'-------------------------------------------------------
End Sub
End Class
End Namespace
Namespace Memento.EjemploCliente
Public Class Cliente
Private _nombre As String
Private _telefono As String
Private _importeVentas As Double
'// Properties
Public Property Nombre() As String
Get
Return _nombre
End Get
Set(ByVal value As String)
_nombre = value
Console.WriteLine("[Originador] - Estableciendo Propiedad Nombre : {0}", _nombre)
End Set
End Property
Public Property Telefono() As String
Get
Return _telefono
End Get
Set(ByVal value As String)
_telefono = value
Console.WriteLine("[Originador] - Estableciendo Propiedad Telefono : {0}", _telefono)
End Set
End Property
Public Property ImporteVentas() As Double
Get
Return _importeVentas
End Get
Set(ByVal value As Double)
_importeVentas = value
Console.WriteLine("[Originador] - Estableciendo Propiedad ImporteVentas : {0}", ImporteVentas)
End Set
End Property
'-----------------------------------------------
'''
''' Obtiene un memento con los valores de
''' los campos de la clase
'''
''' Un Objeto Memento
Public Function ObtenerMemento() As MementoCliente
Console.WriteLine("[Originador] - Obteniendo un Memento:")
Return New MementoCliente(Nombre, Telefono, ImporteVentas)
End Function
'-----------------------------------------------
'''
''' Restaura el valor de los campos de la clase
''' con un objeto Memento
'''
'''
''' El memento del que se leen los datos para
''' restaurar los valores de los campos de la clase
'''
Public Sub RestaurarMemento(ByVal memento As MementoCliente)
Console.WriteLine("[Originador] - Restaurando un Memento:")
Me.Nombre = memento.Nombre
Me.Telefono = memento.Telefono
Me.ImporteVentas = memento.ImporteVentas
End Sub
End Class
End Namespace
Namespace Memento.EjemploCliente
Public Class MementoCliente
' Campos de la clase
Private _nombre As String
Private _telefono As String
Private _importeVentas As Double
' Constructor
Public Sub New(ByVal nombre As String, ByVal telefono As String, ByVal importeVentas As Double)
Console.WriteLine("[Memento ] - Creacion ")
Me.Nombre = nombre
Me.Telefono = telefono
Me.ImporteVentas = importeVentas
End Sub
' Propiedades
Public Property Nombre() As String
Get
Return _nombre
End Get
Private Set(ByVal value As String)
_nombre = value
Console.WriteLine("[Memento ] - Estableciendo Propiedad Nombre : {0}", _nombre)
End Set
End Property
Public Property Telefono() As String
Get
Return _telefono
End Get
Private Set(ByVal value As String)
_telefono = value
Console.WriteLine("[Memento ] - Estableciendo Propiedad Telefono : {0}", _telefono)
End Set
End Property
Public Property ImporteVentas() As Double
Get
Return _importeVentas
End Get
Private Set(ByVal value As Double)
_importeVentas = value
Console.WriteLine("[Memento ] - Estableciendo Propiedad ImporteVentas : {0}", ImporteVentas)
End Set
End Property
End Class
End Namespace
Namespace Memento.EjemploCliente
' clase conserje, almacena el menento
Public Class ConserjeCliente
Private _memento As MementoCliente
'// Property
Public Property Memento() As MementoCliente
Get
Console.WriteLine("[Conserje ] - Devolviendo el Memento ")
Return _memento
End Get
Set(ByVal value As MementoCliente)
Console.WriteLine("[Conserje ] - Almacenado el Memento ")
_memento = value
End Set
End Property
End Class
End Namespace
Patrón Memento (Recuerdo)
1