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 56 57 58 59 60 61 62 63 |
namespace ConsoleApplication2 { class Program { static void Main(string[] args) { new caretaker(); System.Console.ReadKey(); } } /* Memento インスタンスのスナップショット */ public class Memento//記念品 { public int param = 1; public Memento(int p) { this.param = p; } } public class caretaker { System.Collections.Generic.Dictionary<string, Memento> dic = new System.Collections.Generic.Dictionary<string, Memento>(); public caretaker() { Originator o = new Originator(); o.CalcSum(1,2); dic.Add("first snapshot", o.CreateMemento()); o.CalcSum(3, 2); dic.Add("second snapshot", o.CreateMemento()); o.SetMemento(dic["first snapshot"]); System.Console.WriteLine(o.param.ToString()); } } public class Originator//作成者 { public int param; public void CalcSum(int x,int y) { this.param = x + y; } public Memento CreateMemento() { return new Memento(param); } public void SetMemento(Memento m) { this.param = m.param; } } } |