-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMementoPattern.cs
55 lines (45 loc) · 1.11 KB
/
MementoPattern.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// Memento - Permite restaurar o estado anterior de um objeto sem expor sua implementação interna.
public class Estado
{
public string Nome { get; set; }
public int Idade { get; set; }
}
public class Memento
{
public Estado EstadoSalvo { get; private set; }
public Memento(Estado estado)
{
EstadoSalvo = new Estado { Nome = estado.Nome, Idade = estado.Idade };
}
}
public class Origem
{
private Estado estado;
public Origem(string nome, int idade)
{
estado = new Estado { Nome = nome, Idade = idade };
}
public Memento SalvarEstado()
{
return new Memento(estado);
}
public void RestaurarEstado(Memento memento)
{
estado = memento.EstadoSalvo;
}
public void MostrarEstado()
{
Console.WriteLine($"Nome: {estado.Nome}, Idade: {estado.Idade}");
}
}
public class Program
{
static void Main()
{
Origem origem = new Origem("Vitor", 30);
origem.MostrarEstado();
Memento memento = origem.SalvarEstado();
origem.RestaurarEstado(memento);
origem.MostrarEstado();
}
}