예제 #1
0
        public static void Main(string[] args)
        {
            //CreateMemento é usado para definir o estado interno do objeto.
            //SetMemento obterá e atribuirá esse estado interno ao originator.
            Originator originator = new Originator();

            //Manter os objetos memento.
            Caretaker caretaker = new Caretaker();

            originator.bike = new Bicicleta("Left", "Shimano", "Azul");
            caretaker.AddMemento(originator.CreateMemento());

            originator.bike = new Bicicleta("Manintou", "Shimano", "Azul");
            caretaker.AddMemento(originator.CreateMemento());

            originator.bike = new Bicicleta("RockShocks", "Sram", "Preta");
            caretaker.AddMemento(originator.CreateMemento());

            Console.WriteLine("\nConfiguração atual: " + originator.GetDetails());

            Console.WriteLine("\nRestaurar a bike para estado original");

            originator.bike = caretaker.GetMemento(0).bike;

            Console.WriteLine("\nConfiguração atual: " + originator.GetDetails());
            Console.ReadKey();
        }
예제 #2
0
        public static void Run()
        {
            Originator originator = new Originator();

            originator.ledTV = new LEDTV("42 inch", "60000Rs", false);

            Caretaker caretaker = new Caretaker();

            caretaker.AddMemento(originator.CreateMemento());
            originator.ledTV = new LEDTV("46 inch", "80000Rs", true);
            caretaker.AddMemento(originator.CreateMemento());
            originator.ledTV = new LEDTV("50 inch", "100000Rs", true);

            Console.WriteLine("\nOrignator current state : " + originator.GetDetails());
            Console.WriteLine("\nOriginator restoring to 42 inch LED TV");
            originator.ledTV = caretaker.GetMemento(0).ledTV;
            Console.WriteLine("\nOrignator current state : " + originator.GetDetails());
            Console.ReadKey();
        }