コード例 #1
0
        static void Main(string[] args)
        {
            //创建一个角色
            GameRole xiaoming = new GameRole("小明", 100, 50, 1000, 300, 345);

            xiaoming.DisplayInfo();

            //一个存储进度的类
            CareTaker taker = new CareTaker();

            //把信息存档
            taker[0] = xiaoming.Archive();
            Console.WriteLine(xiaoming.Fight() ? "大战boss赢了" : "大战boss输掉了");

            //大战boss之后的信息
            xiaoming.DisplayInfo();

            //读取存档
            xiaoming.Read(taker[0]);

            //显示读取之后的信息
            xiaoming.DisplayInfo();

            Console.Read();
        }
コード例 #2
0
ファイル: Helper.cs プロジェクト: mvshete/Design-Patterns
        public static void GetMemento()
        {
            var org = new Originator {
                Id = 100, Name = "Manjuanth", Salary = 1234.34
            };

            Console.WriteLine("Original Values : Id {0} - Name {1} - Age {2}", org.Id, org.Name, org.Salary);
            Console.WriteLine("");

            var taker = new CareTaker {
                EmpInfo = org.SaveState()
            };

            org.Id     = 101;
            org.Name   = "Askahy";
            org.Salary = 4567.56;

            Console.WriteLine("Updated Values : Id {0} - Name {1} - Age {2}", org.Id, org.Name, org.Salary);
            Console.WriteLine("");

            org.RestoreState(taker.EmpInfo);

            Console.WriteLine("Restored Values : Id {0} - Name {1} - Age {2}", org.Id, org.Name, org.Salary);
            Console.WriteLine("");
        }
コード例 #3
0
        static void Main(string[] args)
        {
            Originator originator = new Originator();
            CareTaker  careTaker  = new CareTaker();

            originator.State = "state 加载";
            careTaker.List.Add(originator.Save());
            originator.State = "state 初始化";
            careTaker.List.Add(originator.Save());
            originator.State = "state 就绪";
            careTaker.List.Add(originator.Save());
            originator.State = "state 运行";
            careTaker.List.Add(originator.Save());
            originator.State = "state 结束";
            careTaker.List.Add(originator.Save());
            Console.WriteLine("Current State:" + originator.State);
            originator.LoadSave(careTaker.List[0]);
            Console.WriteLine("Current State:" + originator.State);
            originator.LoadSave(careTaker.List[1]);
            Console.WriteLine("Current State:" + originator.State);
            originator.LoadSave(careTaker.List[2]);
            Console.WriteLine("Current State:" + originator.State);
            originator.LoadSave(careTaker.List[3]);
            Console.WriteLine("Current State:" + originator.State);
            originator.LoadSave(careTaker.List[4]);
            Console.WriteLine("Current State:" + originator.State);
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: aerdogan/designpatterns
        static void Main(string[] args)
        {
            Book book = new Book
            {
                Isbn   = "12345",
                Title  = "Sefiller",
                Author = "Victor Hugo"
            };

            book.ShowBook();

            CareTaker history = new CareTaker();

            history.memento = book.CreateUndo();

            book.Isbn  = "54321";
            book.Title = "TITLE";

            book.ShowBook();
            book.RestoreFromUndo(history.memento);

            book.ShowBook();

            Console.ReadLine();
        }
コード例 #5
0
 public Program()
 {
     myStore    = new CareTaker();
     originator = new Originator();
     Console.WriteLine("Storing Memento");
     originator.Set("My Initial State which will be stored");
     myStore.ADD(originator.Store());
     itemNumber++;
     originator.Set("My Changed State which will not be stored and will be restored");
     Console.WriteLine("Restored : " + originator.Restore(myStore.GetMemento(itemNumber - 1)));
     Console.ReadLine();
 }
コード例 #6
0
        public Form1()
        {
            InitializeComponent();

            originator = new Originator();
            careTaker  = new CareTaker();

            btnRedo.Click += BtnRedo_Click;
            btnSave.Click += BtnSave_Click;
            btnUndo.Click += BtnUndo_Click;

            btnUndo.Enabled = false;
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: adad122/DesignPattern
        static void Main(string[] args)
        {
            Originator originator = new Originator();
            CareTaker  careTaker  = new CareTaker();

            originator.SetState("State #1");
            originator.SetState("State #2");
            careTaker.Add(originator.SaveStateToMemento());
            originator.SetState("State #3");
            careTaker.Add(originator.SaveStateToMemento());
            originator.SetState("State #4");

            Console.WriteLine("Current State: " + originator.GetState());
            originator.GetStateFromMemento(careTaker.Get(0));
            Console.WriteLine("First saved State: " + originator.GetState());
            originator.GetStateFromMemento(careTaker.Get(1));
            Console.WriteLine("Second saved State: " + originator.GetState());
        }
コード例 #8
0
        public static void Main(string[] args)
        {
            Originator originator = new Originator();
            CareTaker  caretaker  = new CareTaker();

            originator.setState("State #1");
            originator.setState("State #2");
            caretaker.Add(originator.saveStateToMemento());

            originator.setState("State #3");
            caretaker.Add(originator.saveStateToMemento());

            originator.setState("State #4");
            Console.WriteLine(String.Format("Current state: {0}", originator.getState()));

            originator.getStateFromMemento(caretaker.Get(0));
            Console.WriteLine(String.Format("First saved state: {0}", originator.getState()));
            originator.getStateFromMemento(caretaker.Get(1));
            Console.WriteLine(String.Format("Second saved state: {0}", originator.getState()));

            Console.ReadLine();
        }
コード例 #9
0
ファイル: Program.cs プロジェクト: Eschechola/DesignPatterns
        static void Main(string[] args)
        {
            Invoice invoice = new Invoice(
                id: Guid.NewGuid(),
                customerDocument: "000.000.000-00",
                customerName: "Lucas G.",
                amountToPay: new Random().Next(100, 1500));

            Console.WriteLine("1 - State");
            Console.WriteLine("Id: {0}", invoice.Id.ToString());
            Console.WriteLine("Document: {0}", invoice.CustomerDocument);
            Console.WriteLine("Name: {0}", invoice.CustomerName);
            Console.WriteLine("Amount to pay: R$ {0:0.00}", invoice.AmountToPay);

            CareTaker caretaker = new CareTaker();

            caretaker.InvoiceMemento = invoice.SaveMemento();

            invoice.CustomerName = "Lucas E.";
            invoice.AmountToPay  = new Random().Next(100, 1500);

            Console.WriteLine("\n\n2 - State");
            Console.WriteLine("Id: {0}", invoice.Id.ToString());
            Console.WriteLine("Document: {0}", invoice.CustomerDocument);
            Console.WriteLine("Name: {0}", invoice.CustomerName);
            Console.WriteLine("Amount to pay: R$ {0:0.00}", invoice.AmountToPay);

            invoice.RestoreMemento(caretaker.InvoiceMemento);

            Console.WriteLine("\n\n3 - State");
            Console.WriteLine("Id: {0}", invoice.Id.ToString());
            Console.WriteLine("Document: {0}", invoice.CustomerDocument);
            Console.WriteLine("Name: {0}", invoice.CustomerName);
            Console.WriteLine("Amount to pay: R$ {0:0.00}", invoice.AmountToPay);

            Console.ReadKey();
        }
コード例 #10
0
        static void Main(string[] args)
        {
            ////Struture for memento pattern
            //Originator origiator = new Originator();
            //origiator.State = "ON";

            //CareTaker careTaker = new CareTaker();
            //careTaker.Memento = origiator.CreateMemento();

            //origiator.State = "OFF";
            //origiator.SetMemento(careTaker.Memento);

            List <ContactPerson> contactPersons = new List <ContactPerson>()
            {
                new ContactPerson()
                {
                    Name = "Learning Hard", MobileNum = "123445"
                },
                new ContactPerson()
                {
                    Name = "Tony", MobileNum = "234565"
                },
                new ContactPerson()
                {
                    Name = "Jock", MobileNum = "231455"
                }
            };
            MobileOwner owner = new MobileOwner(contactPersons);

            owner.ShowContacts();

            CareTaker careTaker = new CareTaker();

            careTaker.ContactMementos.Add(DateTime.Now.ToString(), owner.CreateMemento());

            //Remove some contacts;
            owner.ContactPersons.RemoveAt(2);
            owner.ShowContacts();

            Thread.Sleep(1000);
            careTaker.ContactMementos.Add(DateTime.Now.ToString(), owner.CreateMemento());

            Console.WriteLine("Restore Date Index:");
            var keyCollections = careTaker.ContactMementos.Keys;

            foreach (var key in keyCollections)
            {
                Console.WriteLine(key);
            }
            while (true)
            {
                int index = -1;
                try
                {
                    index = Int32.Parse(Console.ReadLine());
                }
                catch
                {
                    Console.WriteLine("The format is wrong");
                    continue;
                }

                ContactMemento contactMentor = null;
                if (index < keyCollections.Count && careTaker.ContactMementos.TryGetValue(keyCollections.ElementAt(index), out contactMentor))
                {
                    owner.RestoreMemento(contactMentor);
                    owner.ShowContacts();
                }
                else
                {
                    Console.WriteLine("");
                }
            }



            Console.Read();
        }