Memento in VB.NET
Capture and restore an object's internal state
ReturnWithout violating encapsulation, capture and externalize an object's internal state so that the object can be restored to this state later. Memento pattern temporary saves and restores another object's internal state.
Please download project with this source code from https://github.com/ViacheslavUKR/StandardDisignOopPattern
1: ' Memento Design Pattern.
2: ' See description in //www.vb-net.com/ProgramTheory/Memento.htm
3: Class MainApp
4: ' Entry point into console application.
5: Public Shared Sub Main()
6: Dim o As New Originator()
7: o.State = "On"
8: ' Store internal state
9: Dim c As New Caretaker()
10: c.Memento = o.CreateMemento()
11: ' Continue changing originator
12: o.State = "Off"
13: ' Restore saved state
14: o.SetMemento(c.Memento)
15: ' Wait for user
16: Console.ReadKey()
17: End Sub
18: End Class
19:
20: ' The 'Originator' class
21: Class Originator
22: Private _state As String
23: ' Property
24: Public Property State() As String
25: Get
26: Return _state
27: End Get
28: Set(value As String)
29: _state = value
30: Console.WriteLine(Convert.ToString("State = ") & _state)
31: End Set
32: End Property
33: ' Creates memento
34: Public Function CreateMemento() As Memento
35: Return (New Memento(_state))
36: End Function
37: ' Restores original state
38: Public Sub SetMemento(memento As Memento)
39: Console.WriteLine("Restoring state...")
40: State = memento.State
41: End Sub
42: End Class
43:
44: ' The 'Memento' class
45: Class Memento
46: Private _state As String
47: ' Constructor
48: Public Sub New(state As String)
49: Me._state = state
50: End Sub
51: ' Gets or sets state
52: Public ReadOnly Property State() As String
53: Get
54: Return _state
55: End Get
56: End Property
57: End Class
58:
59: ' The 'Caretaker' class
60: Class Caretaker
61: Private _memento As Memento
62: ' Gets or sets memento
63: Public Property Memento() As Memento
64: Get
65: Return _memento
66: End Get
67: Set(value As Memento)
68: _memento = value
69: End Set
70: End Property
71: End Class
See also:
Creational Patterns
- Abstract Factory in VB.NET - Creates an instance of several families of classes.
- Builder in VB.NET - Separates object construction from its representation.
- Factory Method in VB.NET - Creates an instance of several derived classes.
- Prototype in VB.NET - A fully initialized instance to be copied or cloned.
- Singleton in VB.NET - A class of which only a single instance can exist.
- Adapter in VB.NET - Match interfaces of different classes
- Bridge in VB.NET - Separates an object???s interface from its implementation
- Composite in VB.NET - A tree structure of simple and composite objects
- Decorator in VB.NET - Add responsibilities to objects dynamically
- Facade in VB.NET - A single class that represents an entire subsystem
- Flyweight in VB.NET - A fine-grained instance used for efficient sharing
- Proxy in VB.NET - An object representing another object
- Chain of Resp. in VB.NET - A way of passing a request between a chain of objects
- Command in VB.NET - Encapsulate a command request as an object
- Interpreter in VB.NET - A way to include language elements in a program
- Iterator in VB.NET - Sequentially access the elements of a collection
- Mediator in VB.NET - Defines simplified communication between classes
- Memento in VB.NET - Capture and restore an object's internal state
- Observer in VB.NET - A way of notifying change to a number of classes
- State in VB.NET - Alter an object's behavior when its state changes
- Strategy in VB.NET - Encapsulates an algorithm inside a class
- Template Method in VB.NET - Defer the exact steps of an algorithm to a subclass
- Visitor in VB.NET - Defines a new operation to a class without change
Comments (
)
Link to this page:
//www.vb-net.com/ProgramTheory/Memento.htm
<SITEMAP> <MVC> <ASP> <NET> <DATA> <KIOSK> <FLEX> <SQL> <NOTES> <LINUX> <MONO> <FREEWARE> <DOCS> <ENG> <CHAT ME> <ABOUT ME> < THANKS ME> |